380 Commits

Author SHA1 Message Date
Denis Isaev
bad04bb737
dev: regenerate README.md after #630
Also, output help for the new option in a more compact way.
2019-09-10 11:17:18 +03:00
Sean DuBois
f312a0fc4e fix #416: Add skip-dirs-use-default (#630) 2019-09-10 11:14:25 +03:00
Isaev Denis
6163a8a790
Support go1.13 (#670)
Setup Travis CI to run on go 1.12 and 1.13.
Update info about go versions in README.
Rebuild go.mod,go.sum on go1.13.
2019-09-09 21:54:56 +03:00
Cody Ley-Han
a8f2c27d1d Add user supplied error messages in depguard issues (#662) 2019-09-09 20:46:55 +03:00
Isaev Denis
6864b2f764
dev: enable funlen on repo (#668) 2019-09-09 18:07:09 +03:00
NiseVoid
bb82273160 Add funlen linter (#603) 2019-09-09 16:56:30 +03:00
Isaev Denis
375a5a8cae
Speed up linting: use deduplicated packages (#667)
Use deduplicated packages for all linters except megacheck.
See https://github.com/golangci/golangci-lint/pull/585 for details.
2019-09-09 16:48:15 +03:00
Liam White
e1a7422dd5 Update gochecknoglobals to support version exception (#601)
See 7c3491d2b6
2019-09-09 16:42:51 +03:00
Luke Shumaker
e87a1cfb83 Fix a false-positive from 'unused' (#585)
This false-positive is not present in the upstream stand-alone 'unused'
2019.1.1 program that golangci-lint uses.

pkg/lint.ContextLoader.filterPackages() did two things:
 1. It removed synthetic "testmain" packages (packages with .Name=="main"
    and .PkgPath ending with ".test")
 2. It removed pruned subsumed copies of packages; if a package with files
    "a.go" and "a_test.go", it results in packages.Load giving us two
    packages:
      - ID=".../a" GoFiles=[a.go]
      - ID=".../a [.../a.test]" GoFiles=[a.go a_test.go]
    The first package is subsumed in the second, and leaving it around
    results in duplicated work, and confuses the 'deadcode' linter.

However, the 'unused' linter relies on both the ".../a" and
".../a [.../a.test]" packages being present.  Pruning them causes it to
panic in some situations, which lead to this workaround:
af6baa5dc1

While that workaround got it to not panic, it causes incorrect results.

So, split filterPackages() in to two functions: filterTestMainPackages()
and filterDuplicatePackages().  The linter.Context.Packages list only
gets filterTestMainPackages() called on it, while linter.Context.Program
and linter.Context.SSAProgram get both filters applied.

With the source of the panic fixed, roll back a few now-unnecessary
commits in go-tools.
2019-09-09 16:10:49 +03:00
Denis Isaev
e39e8fb5d5 update x/tools
Significantly improve CPU and memory usage when not using SSA-powered linters.
Improve readability of go/packages errors.
Improve debugging capabilities and write doc about debugging.
2019-09-09 15:04:32 +03:00
Andrey Kuchin
e17582581d fix possible race in line cache 2019-07-14 17:08:12 +03:00
Andrey Kuchin
c5b0f95dac fix cuncurrent [read/]write panic 2019-07-14 17:08:12 +03:00
Denis Isaev
360a58dca9 dev: misspell: always build replacement 2019-06-30 10:41:25 +03:00
Denis Isaev
4ba2155996 fix #529: exit with code 7 when error was logged 2019-06-10 11:44:19 +03:00
Trevor Pounds
d7ea266760 Fix minor grammatical error. Fixes #556. 2019-06-10 09:24:30 +03:00
Denis Isaev
3d78f64b60 fix #522: run misspell in text mode
Treat Go source files as plain text files by misspell: it allows detecting
issues in strings, variable names, etc. Also, it's the default mode of
a standalone misspell tool.

Also, implement richer and more stable auto-fix of misspell issues:
now it can fix multiple issues in one line.
2019-06-09 20:14:19 +03:00
Denis Isaev
7db400b2d2 fix #521: explain //nolint usage in README
Also, add more tests for block-wise
usage of //nolint.
2019-06-09 17:27:42 +03:00
Denis Isaev
6508d1623a fix #513: don't add gofmt "with -s" if not needed
Output
  File is not `gofmt`-ed
insted of
  File is not `gofmt`-ed  with `-s`
when gofmt.simplify == false
2019-06-09 16:22:41 +03:00
Sonia Hamilton
5c86bfc905 junit-xml output 2019-06-09 13:23:17 +03:00
Isaev Denis
66d4a16c6a
Merge branch 'master' into lukeshu/reproduce 2019-06-09 13:18:41 +03:00
Denis Isaev
9d8eb16395
fix after #533: fix comment and goimports 2019-06-09 13:08:46 +03:00
Gianguido Sorà
72e137e344 Added "bodyclose" support
This commit adds full support for bodyclose linter
(https://github.com/timakin/bodyclose), which checks if an `http.Body`
element is correctly closed after usage.

Since it can be used via `go/analysis', I followed the `govet' example
as suggested by https://github.com/golangci/golangci-lint/wiki/How-to-add-a-custom-linter.

This commit is fully tested, and contains a (flawed) test program which
calls `http.Get()' on `https://google.com' and does not closes its
corresponding `http.Body'.
2019-06-09 13:04:30 +03:00
Luke Shumaker
2508856219 Makefile: Be clear about exactly which files are generated, and how
This mostly aims to document how everything was generated, and the steps
necessary to re-generate the same files verbatim; the goal is to figure
out how to reproduce the files as they currently are.  The exception is
that we strip out the timestamp out of install.sh.
2019-06-05 01:04:00 -04:00
Denis Isaev
39f46be460 Fix staticcheck panic on packages that do not compile
The bug was introduced in golangci-lint when migrating staticcheck to go/packages.
Also, thanks to pkg.IllTyped we can analyze as max as we can by
staticcheck.

Relates: #418, #369, #429, #489
2019-04-21 11:48:33 +03:00
Denis Isaev
ec5bf9b67b Fix linting of goyacc files
Skip yacctab, yaccpar and NONE files.

Relates: #467, #468
2019-04-20 22:30:48 +03:00
Denis Isaev
ed0b551070 Fix linting of preprocessed files
Preprocessed files like .qtpl.go quicktemplate Go files can have
//line directives. They map to a source .qtpl file.
This commit fixes linting of such files:
1. don't fail on AST cache loading
2. output Go filename not .qtpl or similar

Also, here we update golint to the upstream version.

Relates: #316, #466, #467, #468
2019-04-20 21:50:26 +03:00
Aofei Sheng
cc84f896b6 Correct import path of module sourcegraph/go-diff 2019-04-20 13:12:28 +03:00
John.Koepi
de1d1ad903 make use of LoadAllSyntax compatible with the latest x/tools version 2019-04-02 09:56:13 +03:00
Denis Isaev
396a04630d dev: improve memory tracking 2019-03-31 22:33:18 +03:00
Denis Isaev
f516771a92 Fix #415: sort linters list in help commands 2019-03-18 08:46:13 +03:00
Denis Isaev
8c1237b667 Use the newest go vet
The newest go vet based on go/analysis
2019-03-17 23:12:44 +03:00
Denis Isaev
7289a90245 modify goanalysis 2019-03-17 23:12:44 +03:00
Denis Isaev
926e99aed0 copy go/analysis internal/checker into the project as is
use commit f0bfdbff1f9c986484a9f02fc198b1efcfe76ebe
2019-03-17 23:12:44 +03:00
Rodrigo Brito
099f2ae41a Include log level option 2019-03-17 23:06:27 +03:00
Ben Paxton
f13d8387d3 fix help generation; update README 2019-03-17 15:27:45 +03:00
Ben Paxton
c41b1e2034 Add --color flag to force colored output on/off 2019-03-17 15:27:45 +03:00
Denis Isaev
3d2dfac47e Support excluding issues by source line regexp
See issues.exclude-rules[i].source.
Also introduced file data and file lines cache.
2019-03-17 15:17:29 +03:00
Trevor Pounds
7514bf8239 Fix AST cache key consistency.
Ensures the AST cache always consistently loads/stores
by using the normalized file path as the key.
2019-03-05 21:59:44 +03:00
Denis Isaev
96af958205 fix #383: eval symlinks in AST cache 2019-02-18 00:21:49 +03:00
Denis Isaev
307c287356 Fix #388: include staticcheck check name into a message 2019-02-17 23:50:11 +03:00
Denis Isaev
ebadb7a679 Fix #384: support ignore-words option for misspell 2019-02-17 23:47:29 +03:00
Denis Isaev
d437ac8629 Implement auto-fixing for gofmt,goimports,misspell
Also, add more identifier marking patterns.
2019-02-17 20:31:31 +03:00
Aleksandr Razumov
e672537942 remove obvious TODO about concurrent exclude rule processing 2019-02-17 18:40:22 +03:00
Aleksandr Razumov
30bfd60b2b improve tests for exclude rules 2019-02-17 18:40:22 +03:00
Aleksandr Razumov
edd055f862 config: add validation for exclude rules 2019-02-17 18:40:22 +03:00
Aleksandr Razumov
a3a04552bb add support for exclude rules 2019-02-17 18:40:22 +03:00
Denis Isaev
7c49721144
update gochecknoglobals
Apply
abbdf6ec0a
2019-02-11 09:49:05 +03:00
Elliot Shepherd
186fe37bf8 add code-climate output format
Just the minimum of the format, to support GitLab CI Code Quality - https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html
2019-02-11 14:26:26 +08:00
Denis Isaev
c1085ef5a2
Relates #381, #367: cleanup docs and warn if unparam algo was configured 2019-02-11 08:56:49 +03:00
Jonathan Chappelow
01fb8231f9 unparam: update unparam, and go mod vendor
This updates the unparam linter to the current version that has fewer
false positives. The go.{mod,sum} files and the vendor folder are
updated as follows:

export GO111MODULE=on
go get -u mvdan.cc/unparam
go mod tidy
go mod vendor

The unparam callgraph algorithm is no longer selectable. Ref:
https://github.com/mvdan/unparam/commit/e6a6d1c5
This is the reason for removing the c.CallgraphAlgorithm(us.Algo) line
from pkg/golinters/unparam.go.
2019-02-11 13:48:53 +08:00