-
-
Couldn't load subscription status.
- Fork 1.5k
feat: add untypedconst linter #3527
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
Conversation
e20c62e to
f1023ca
Compare
In order for a pull request adding a linter to be reviewed, the linter and the PR must follow some requirements.
Pull Request Description
- It must have a link to the linter repository.
- It must provide a short description of the linter.
Linter
- It must not be a duplicate of another linter or a rule of a linter. (the team will help to verify that)
- It must have a valid license (AGPL is not allowed) and the file must contain the required information by the license, ex: author, year, etc.
- The linter repository must have a CI and tests.
- It must use
go/analysis. - It must have a valid tag, ex:
v1.0.0,v0.1.0. - It must not contain
init(). - It must not contain
panic(),log.fatal(),os.exit(), or similar. - It must not have false positives/negatives. (the team will help to verify that)
- It must have tests inside golangci-lint.
The Linter Tests Inside Golangci-lint
- They must have at least one std lib import.
- They must work with
T=<name of the linter test file>.go make test_linters. (the team will help to verify that)
.golangci.reference.yml
- The linter must be added to the list of available linters (alphabetical case-insensitive order).
enableanddisableoptions
- If the linter has a configuration, the exhaustive configuration of the linter must be added (alphabetical case-insensitive order)
- The values must be different from the default ones.
- The default values must be defined in a comment.
- The option must have a short description.
Others Requirements
- The files (tests and linter) inside golangci-lint must have the same name as the linter.
- The
.golangci.ymlof golangci-lint itself must not be edited and the linter must not be added to this file. - The linters must be sorted in the alphabetical order (case-insensitive) in the
Manager.GetAllSupportedLinterConfigs(...)and.golangci.reference.yml. - The load mode (
WithLoadMode(...)):- if the linter doesn't use types:
goanalysis.LoadModeSyntax goanalysis.LoadModeTypesInforequiredWithLoadForGoAnalysis()in theManager.GetAllSupportedLinterConfigs(...)
- if the linter doesn't use types:
- The version in
WithSince(...)must be the next minor version (v1.X.0) of golangci-lint.
Recommendations
- The linter should not use SSA. (currently, SSA does not support generics)
- The linter repository should have a readme and linting.
- The linter should be published as a binary. (useful to diagnose bug origins)
The golangci-lint team will edit this comment to check the boxes before and during the review.
This checklist does not imply that we will accept the linter.
Is there anything I can do to get this reviewed? Friendly ping towards @ldez :)
I really think this is a great addition to the project. I use the linter on quite a few projects already and it has proven to be super helpful. Is there anything I could do to get this merged?
@leonklingele could you please resolve conflicts and update the PR according to the #3527 (comment)?
f1023ca to
11d633c
Compare
Updated, ptal.
Upstream has made some changes to comply with our requirements since: jiftechnify/untypedconst#1 (comment) 🥳
@leonklingele could you address the point regarding "The Linter Tests Inside Golangci-lint: They must have at least one std lib import"?
11d633c to
7f5f85f
Compare
Done 😊
EDIT: CI is failing, apparently: analysis.go:189: untypedconst.go:5:2: unexpected diagnostic: could not import fmt (Config.Importer.Import(fmt) returned nil but no error) What does that mean?
This comment has been minimized.
This comment has been minimized.
7f5f85f to
ad1ca78
Compare
Updated this for the latest v1.64.0 release. Please have another look at it. I'd love to see this being a part of the project! 😃
@ldez is there anything missing here to have this reviewed? Thank you! 😃
This comment was marked as off-topic.
This comment was marked as off-topic.
CLAassistant
commented
May 20, 2025
CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.
Uh oh!
There was an error while loading. Please reload this page.
The
untypedconstlinter ensures that untyped constant expressions are not used as values of defined (= named) types.https://github.com/jiftechnify/untypedconst
Fixes #3478