-
Notifications
You must be signed in to change notification settings - Fork 0
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
RFC: nimlint: automate enforcing best practices in code #415
Comments
Sounds good to me, it could be integrated into Github APP in the future. |
@xflywind IMO this should be integrated in the compiler, enabled by a new nim flag That's the only way to have a robust tool that allows arbitrary lint results, in particular the most interesting ones require semantic analysis. Using the compiler as a library (compilerapi) would be either very restrictive or require a lot of duplicating of the logic in the compiler. I can give examples if needed. Implementation wise, it actually doesn't sound too difficult, the general idea would be:
Furthermore, it would be nice to enable user defined lint checks, for example testament could define its own lint checks for tests (eg assert vs doAssert), that remains TBD for how to do that but via macros would be nice. notea flag |
see https://github.com/nim-compiler-dev/lint |
Releated: nim-lang#14728 |
would it be possible to add to the linter responsibility to track down noSideEffects escape hatch usages in project? Like the cast(noSideEffect) pragma. |
goal: a tool that would increase automation, improve quality of existing code and PR's, decrease time spent by reviewers in reviewing PR's.
This would use
compilerapi.nim
to give same access to code as what nim has, or be built into nim if it's simpler to do so (like--styleCheck
on steroids).This would be usable both as a library and as cmdline:
as cmdline, it'd accept all options accepted by nim, eg:
As library code, TBD.
Some small number of false positive recommendations are acceptable
The linter should be customizable (in particular to suite ones needs in their third party code).
lint items
test
(eg:test: "nim c $1"
; perhaps with:status: 1
)exitcode: 0
usually useless)features
#!nimpretty off
(maybe via a pragma or special
#!nimlint:off
syntax)extension: nimfix
/cc @xflywind what do you think? feel free to add to this
lint items
listlinks
The text was updated successfully, but these errors were encountered: