Uses `gopls check <files>` as a linter. Tested locally and brings up 149 errors currently for me. I don't think I want to fix them in this PR, but I would like at least to get this analysis running on CI. List of errors: ``` modules/indexer/code/indexer.go:181:11: impossible condition: nil != nil routers/private/hook_post_receive.go:120:15: tautological condition: nil == nil services/auth/source/oauth2/providers.go:185:9: tautological condition: nil == nil services/convert/issue.go:216:11: tautological condition: non-nil != nil tests/integration/git_test.go:332:9: impossible condition: nil != nil services/migrations/migrate.go:179:24-43: unused parameter: ctx services/repository/transfer.go:288:48-69: unused parameter: doer tests/integration/api_repo_tags_test.go:75:41-61: unused parameter: session tests/integration/git_test.go:696:64-74: unused parameter: baseBranch tests/integration/gpg_git_test.go:265:27-39: unused parameter: t tests/integration/gpg_git_test.go:284:23-29: unused parameter: tmpDir tests/integration/gpg_git_test.go:284:31-35: unused parameter: name tests/integration/gpg_git_test.go:284:37-42: unused parameter: email ```
		
			
				
	
	
		
			24 lines
		
	
	
		
			725 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			725 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| set -uo pipefail
 | |
| 
 | |
| cd "$(dirname -- "${BASH_SOURCE[0]}")" && cd ..
 | |
| 
 | |
| IGNORE_PATTERNS=(
 | |
|   "is deprecated" # TODO: fix these
 | |
| )
 | |
| 
 | |
| # lint all go files with 'gopls check' and look for lines starting with the
 | |
| # current absolute path, indicating a error was found. This is neccessary
 | |
| # because the tool does not set non-zero exit code when errors are found.
 | |
| # ref: https://github.com/golang/go/issues/67078
 | |
| ERROR_LINES=$("$GO" run "$GOPLS_PACKAGE" check "$@" 2>/dev/null | grep -E "^$PWD" | grep -vFf <(printf '%s\n' "${IGNORE_PATTERNS[@]}"));
 | |
| NUM_ERRORS=$(echo -n "$ERROR_LINES" | wc -l)
 | |
| 
 | |
| if [ "$NUM_ERRORS" -eq "0" ]; then
 | |
|   exit 0;
 | |
| else
 | |
|   echo "$ERROR_LINES"
 | |
|   echo "Found $NUM_ERRORS 'gopls check' errors"
 | |
|   exit 1;
 | |
| fi
 |