70 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Funlen linter
 | 
						|
 | 
						|
Funlen is a linter that checks for long functions. It can checks both on the number of lines and the number of statements.
 | 
						|
 | 
						|
The default limits are 50 lines and 35 statements. You can configure these with the `-l` and `-s` flags.
 | 
						|
 | 
						|
Example code:
 | 
						|
 | 
						|
```go
 | 
						|
package main
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
func fiveStatements() {
 | 
						|
    fmt.Println(1)
 | 
						|
    fmt.Println(2)
 | 
						|
    fmt.Println(3)
 | 
						|
    fmt.Println(4)
 | 
						|
    fmt.Println(5)
 | 
						|
}
 | 
						|
 | 
						|
func sevenLines() {
 | 
						|
    fmt.Println(1)
 | 
						|
 | 
						|
    fmt.Println(2)
 | 
						|
 | 
						|
    fmt.Println(3)
 | 
						|
 | 
						|
    fmt.Println(4)
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Reults in:
 | 
						|
 | 
						|
```
 | 
						|
$ funlen -l=6 -s=4 .
 | 
						|
main.go:5:6:Function 'fiveStatements' has too many statements (5 > 4)
 | 
						|
main.go:13:6:Function 'sevenLines' is too long (7 > 6)
 | 
						|
```
 | 
						|
 | 
						|
## Installation guide
 | 
						|
 | 
						|
```bash
 | 
						|
go get git.ultraware.nl/NiseVoid/funlen
 | 
						|
```
 | 
						|
 | 
						|
### Gometalinter
 | 
						|
 | 
						|
You can add funlen to gometalinter and enable it.
 | 
						|
 | 
						|
`.gometalinter.json`:
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
	"Linters": {
 | 
						|
		"funlen": "funlen -l=50 -s=35:PATH:LINE:COL:MESSAGE"
 | 
						|
	},
 | 
						|
 | 
						|
	"Enable": [
 | 
						|
		"funlen"
 | 
						|
	]
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
commandline:
 | 
						|
 | 
						|
```bash
 | 
						|
gometalinter --linter "funlen:funlen -l=50 -s=35:PATH:LINE:COL:MESSAGE" --enable "funlen"
 | 
						|
```
 |