docs: explain limitation of new-from-rev and new-from-patch (#4377)

This commit is contained in:
Ludovic Fernandez 2024-02-12 18:37:54 +01:00 committed by GitHub
parent bf5008a11a
commit 403437e641
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -9,9 +9,27 @@ Or you can create a [GitHub Issue](https://github.com/golangci/golangci-lint/iss
## How to integrate `golangci-lint` into large project with thousands of issues
We are sure that every project can easily integrate `golangci-lint`, even the large one. The idea is to not fix all existing issues. Fix only newly added issue: issues in new code. To do this setup CI to run `golangci-lint` with option `--new-from-rev=HEAD~1`. Also, take a look at option `--new`, but consider that CI scripts that generate unstaged files will make `--new` only point out issues in those files and not in the last commit. In that regard `--new-from-rev=HEAD~1` is safer.
We are sure that every project can easily integrate `golangci-lint`, even the large one.
The idea is to not fix all existing issues. Fix only newly added issue: issues in new code.
To do this setup CI to run `golangci-lint` with option `--new-from-rev=HEAD~1`.
Also, take a look at option `--new`, but consider that CI scripts that generate unstaged files will make `--new` only point out issues in those files and not in the last commit.
In that regard `--new-from-rev=HEAD~1` is safer.
By doing this you won't create new issues in your code and can choose fix existing issues (or not).
## Why `--new-from-rev` or `--new-from-patch` don't seem to be working in some cases?
The options `--new-from-rev` and `--new-from-patch` work by comparing `git diff` output and issues.
If an issue is not reported as the same line as the changes then the issue will be skipped.
This is the line of the issue is not inside the lines changed.
To fix that you have to use the option `--whole-files`.
The side effect is the issues inside file that contains changes but not directly related to the changes themselves will be reported.
## How to use `golangci-lint` in CI
Run `golangci-lint` in CI and check the exit code. If it's non-zero - fail the build.