github.com/Johnny2210/revive@v1.0.8-0.20210625134200-febf37ccd0f5/testdata/function-length2.go (about)

     1  package fixtures
     2  
     3  import (
     4  	"fmt"
     5  	ast "go/ast"
     6  	"go/token"
     7  )
     8  
     9  func funLengthA() (a int) {
    10  	println()
    11  	println()
    12  	println()
    13  	println()
    14  	println()
    15  }
    16  
    17  func funLengthB(file *ast.File, fset *token.FileSet, lineLimit, stmtLimit int) []Message { // MATCH /maximum number of lines per function exceeded; max 5 but got 23/
    18  	if true {
    19  		a = b
    20  		if false {
    21  			c = d
    22  			for _, f := range list {
    23  				_, ok := f.(int64)
    24  				if !ok {
    25  					continue
    26  				}
    27  			}
    28  			switch a {
    29  			case 1:
    30  				println()
    31  			case 2:
    32  				println()
    33  				println()
    34  			default:
    35  				println()
    36  
    37  			}
    38  		}
    39  	}
    40  	return
    41  }
    42  
    43  func funLengthC(b []ast.Stmt) int { // MATCH /maximum number of lines per function exceeded; max 5 but got 23/
    44  	count := 0
    45  	for _, s := range b {
    46  		switch stmt := s.(type) {
    47  		case *ast.BlockStmt:
    48  			count += w.countStmts(stmt.List)
    49  		case *ast.ForStmt, *ast.RangeStmt, *ast.IfStmt,
    50  			*ast.SwitchStmt, *ast.TypeSwitchStmt, *ast.SelectStmt:
    51  			count += 1 + w.countBodyListStmts(stmt)
    52  		case *ast.CaseClause:
    53  			count += w.countStmts(stmt.Body)
    54  		case *ast.AssignStmt:
    55  			count += 1 + w.countFuncLitStmts(stmt.Rhs[0])
    56  		case *ast.GoStmt:
    57  			count += 1 + w.countFuncLitStmts(stmt.Call.Fun)
    58  		case *ast.DeferStmt:
    59  			count += 1 + w.countFuncLitStmts(stmt.Call.Fun)
    60  		default:
    61  			fmt.Printf("%T %v\n", stmt, stmt)
    62  			count++
    63  		}
    64  	}
    65  
    66  	return count
    67  }
    68  
    69  func funLengthD(b []ast.Stmt) int {
    70  	defer func() { println() }()
    71  }
    72  
    73  func funLengthE(b []ast.Stmt) int { // MATCH /maximum number of lines per function exceeded; max 5 but got 7/
    74  	defer func() {
    75  		if true {
    76  			println()
    77  		} else {
    78  			print()
    79  		}
    80  	}()
    81  }
    82  
    83  func funLengthF(b []ast.Stmt) int {
    84  	if true {
    85  		println()
    86  	} else {
    87  		print()
    88  	}
    89  }
    90  
    91  func funLengthG(b []ast.Stmt) int { // MATCH /maximum number of lines per function exceeded; max 5 but got 7/
    92  	go func() {
    93  		if true {
    94  			println()
    95  		} else {
    96  
    97  		}
    98  	}()
    99  }
   100  
   101  func funLengthH(b []ast.Stmt) int {
   102  	go func() {}()
   103  	println()
   104  }