* Upgrade depguard to fix performance issue with go modules * Fix linting error of unused function
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Depguard
 | 
						|
 | 
						|
Go linter that checks package imports are in a list of acceptable packages. It
 | 
						|
supports a white list and black list option and can do prefix or glob matching.
 | 
						|
This allows you to allow imports from a whole organization or only
 | 
						|
allow specific packages within a repository. It is recommended to use prefix
 | 
						|
matching as it is faster than glob matching. The fewer glob matches the better.
 | 
						|
 | 
						|
> If a pattern is matched by prefix it does not try to match via glob.
 | 
						|
 | 
						|
## Install
 | 
						|
 | 
						|
```bash
 | 
						|
go get -u github.com/OpenPeeDeeP/depguard
 | 
						|
```
 | 
						|
 | 
						|
## Config
 | 
						|
 | 
						|
By default, Depguard looks for a file named `.depguard.json` in the current
 | 
						|
current working directory. If it is somewhere else, pass in the `-c` flag with
 | 
						|
the location of your configuration file.
 | 
						|
 | 
						|
The following is an example configuration file.
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
  "type": "whitelist",
 | 
						|
  "packages": ["github.com/OpenPeeDeeP/depguard"],
 | 
						|
  "packageErrorMessages": {
 | 
						|
    "github.com/OpenPeeDeeP/depguards": "Please use \"github.com/OpenPeeDeeP/depguard\","
 | 
						|
  },
 | 
						|
  "inTests": ["github.com/stretchr/testify"],
 | 
						|
  "includeGoStdLib": true
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
- `type` can be either `whitelist` or `blacklist`. This check is case insensitive.
 | 
						|
  If not specified the default is `blacklist`.
 | 
						|
- `packages` is a list of packages for the list type specified.
 | 
						|
- `packageErrorMessages` is a mapping from packages to the error message to display
 | 
						|
- `inTests` is a list of packages allowed/disallowed only in test files.
 | 
						|
- Set `includeGoStdLib` (`includeGoRoot` for backwards compatability) to true if you want to check the list against standard lib.
 | 
						|
  If not specified the default is false.
 | 
						|
 | 
						|
## Gometalinter
 | 
						|
 | 
						|
The binary installation of this linter can be used with
 | 
						|
[Gometalinter](github.com/alecthomas/gometalinter).
 | 
						|
 | 
						|
If you use a configuration file for Gometalinter then the following will need to
 | 
						|
be added to your configuration file.
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
  "linters": {
 | 
						|
    "depguard": {
 | 
						|
      "command": "depguard -c path/to/config.json",
 | 
						|
      "pattern": "PATH:LINE:COL:MESSAGE",
 | 
						|
      "installFrom": "github.com/OpenPeeDeeP/depguard",
 | 
						|
      "isFast": true,
 | 
						|
      "partitionStrategy": "packages"
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
If you prefer the command line way the following will work for you as well.
 | 
						|
 | 
						|
```bash
 | 
						|
gometalinter --linter='depguard:depguard -c path/to/config.json:PATH:LINE:COL:MESSAGE'
 | 
						|
```
 | 
						|
 | 
						|
## Golangci-lint
 | 
						|
 | 
						|
This linter was built with
 | 
						|
[Golangci-lint](https://github.com/golangci/golangci-lint) in mind. It is compatable
 | 
						|
and read their docs to see how to implement all their linters, including this one.
 |