New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
x/tools/gopls: provide a way to suppress analysis diagnostics for certain files #50764
Comments
No, there isn't a way to do this, currently. Based on the issue subject, are you asking for something akin to the golangci-lint |
@findleyr correct, i'd even be happy if it worked for a single line instead of a while function, the spam is real and I'd rather not turn off the specific linter for the whole project. |
@OneOfOne would you want this just for lint/analysis errors, or would you want it for all diagnostics (including "compiler" errors). I am sympathetic to wanting to suppress lint errors, but I don't think we should ever suppress errors from the compiler (the parser/type checker). If there is a compiler error many other gopls features (autocompletion, jump to definition, etc.) may not function correctly, and it would be confusing if this happens silently. |
Only lint/analysis of course, compiler errors are important. |
My two cents: Compiler errors are important, but linter errors are not. Do not decorate your code with annotations to silence a defective tool. Instead, use better tools and depend on ones that are reliable. It is just bad practice to require your build to pass through a capricious tool like a linter. If you insist on using a linter, find a way for your local build process to disable it when required. Don't require externally-supported tools to honor your process, and don't require source code add marks to disable one too. That slippery slope leads to a valley of toxic muck. |
Can you describe what the problem is in more detail? What I have managed to grasp so far is that gopls is reporting accurately on intentionally buggy code. This does not sound like a problem yet so I think I am missing something. Maybe a brief description of how the workspace is setup? Also what is the test? |
@timothy-king @robpike this is about gopls' linter/analysis not the compiler, to be more specific, we have some tests that that trigger |
I understand the problem you've set yourself, I'm just asking that we don't end up with annotated source code as a solution. Instead, for your particular situation, construct a way to avoid failing on the linter error for that broken code. In other words, it's your problem to solve, not the Go team's, in my obviously biased opinion. Gopls should not make bad code easier to work on. That just contradicts its purpose. |
I'd argue that you can already do that by turning off the guilty linter
rule with gopls options, but instead of turning it off for a specific
function or line like I requested, it'd apply to the whole codebase which
can lead to actual problems.
…On Mon, Jan 24, 2022, 2:49 AM Rob Pike ***@***.***> wrote:
I understand the problem you've set yourself, I'm just asking that we
don't end up with annotated source code as a solution. Instead, for your
particular situation, construct a way to avoid failing on the linter error
for that broken code. In other words, it's your problem to solve, not the
Go team's, in my obviously biased opinion. Gopls should not make bad code
easier to work on. That just contradicts its purpose.
—
Reply to this email directly, view it on GitHub
<#50764 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAIHY6Z6LOMJGPAI6JMDYKTUXUHATANCNFSM5MSZTM2A>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
@robpike I fully agree about avoiding annotated source code, and independent of the solution I don't think we should couple ourselves to golangci-lint -- that is bound to be problematic. However, I do think at a high level it is reasonable to request that gopls provide a mechanism to disable analyses for certain files or directories. Per your point:
Many users primarily consume static analysis through their editor, where the analog of this advice is to find a way to disable the linter where required in the development process. Right now gopls only provides an on/off switch, and I can understand how in certain codebases, perhaps in the process of incremental cleanup, it could be desirable to disable/enable linters for portions of the codebase. With all that said, gopls has long avoided any sort of per-directory configuration, and I'd like to keep avoiding it as long as possible, until the benefit is unambiguous. With respect to this request, it seems possible that no additional gopls configuration is required. The default set of linters gopls uses are the Staticcheck has its own mechanism for per-directory configuration, which we have a long-standing request to support (#36373). I'd rather we do that than build an analogous mechanism for gopls. |
@OneOfOne I empathize with your situation. I still want to understand whether existing exception rules The go command has established its own exception patterns - directory and file names that begin with "." or "_" are ignored, and files in |
@hyangah I guess it's possible to load the tests cases from a json file or something, however I stand by my original request since gopls took over the job of all the linters, and it's fairly standard in most linters to support a way to turn it off per file or function. |
2cents: For testing with string constants that violate ST1018, I recommend putting this data into a file in |
Change https://go.dev/cl/489835 mentions this issue: |
gopls version
Is there a way to stop the linter for just one function or file?
In some of our tests we're bad bad things intentionally and it just clutters the problems pane.
The text was updated successfully, but these errors were encountered: