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 }