32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# nolintlint
 | 
						|
 | 
						|
nolintlint is a Go static analysis tool to find ill-formed or insufficiently explained `//nolint` directives for golangci
 | 
						|
(or any other linter, using th ) 
 | 
						|
 | 
						|
## Purpose
 | 
						|
 | 
						|
To ensure that lint exceptions have explanations.  Consider the case below:
 | 
						|
 | 
						|
```Go
 | 
						|
import "crypto/md5" //nolint:all
 | 
						|
 | 
						|
func hash(data []byte) []byte {
 | 
						|
	return md5.New().Sum(data) //nolint:all
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
In the above case, nolint directives are present but the user has no idea why this is being done or which linter
 | 
						|
is being suppressed (in this case, gosec recommends against use of md5).  `nolintlint` can require that the code provide an explanation, which might look as follows:
 | 
						|
 | 
						|
```Go
 | 
						|
import "crypto/md5" //nolint:gosec // this is not used in a secure application
 | 
						|
 | 
						|
func hash(data []byte) []byte {
 | 
						|
	return md5.New().Sum(data) //nolint:gosec // this result is not used in a secure application
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
`nolintlint` can also identify cases where you may have written `//  nolint`.  Finally `nolintlint`, can also enforce that you
 | 
						|
use the machine-readable nolint directive format `//nolint:all` and that you mention what linter is being suppressed, as shown above when we write `//nolint:gosec`.
 | 
						|
 |