HLint in the GHC CI, an eight-months retrospective
Hécate
hecate at glitchbra.in
Fri Mar 26 15:56:14 UTC 2021
Hi Richard,
I am sorry, I have indeed forgotten one of the most important parts of my
email. :)
The Hadrian rules are
lint:base
lint:compiler
You can invoke them as simply as:
./hadrian/build lint:base
You need to have a recent version of HLint in your PATH. If you use
ghc.nix, this should be taken care of for you.
Hope it clarified things!
Cheers,
Hécate
Le 25 mars 2021 21:39:15 Richard Eisenberg <rae at richarde.dev> a écrit :
> Thanks for this update! Glad to know this effort is going well.
>
> One quick question: suppose I am editing something in `base`. My
> understanding is that my edit will be linted. How can I run hlint locally
> so that I can easily respond to trouble before CI takes a crack? And where
> would I learn this information (that is, how to run hlint locally)?
>
> Thanks!
> Richard
>
>> On Mar 25, 2021, at 11:19 AM, Hécate <hecate at glitchbra.in> wrote:
>>
>> Hello fellow devs,
>>
>> this email is an activity report on the integration of the HLint[0] tool in
>> the Continuous Integration (CI) pipelines.
>>
>> On Jul. 5, 2020 I opened a discussion ticket[1] on the topic of code
>> linting in the several components of the GHC code-base. It has served as a
>> reference anchor for the Merge Requests (MR) that stemmed from it, and
>> allowed us to refine our expectations and processes. If you are not
>> acquainted with its content, I invite you to read the whole conversation.
>>
>> Subsequently, several Hadrian lint rules have been integrated in the
>> following months, in order to run HLint on targeted components of the GHC
>> repository (the base library, the compiler code-base, etc).
>> Being satisfied with the state of the rules we applied to the code-base,
>> such as removing extraneous pragmata and keywords, it was decided to
>> integrate the base library linting rule in the CI. This was five months
>> ago, in September[2], and I am happy to report that developer friction has
>> been so far minimal.
>> In parallel to this work on the base library, I took care of cleaning-up
>> the compiler, and harmonised the various micro coding styles that have
>> emerged quite organically during the decades of development that are behind
>> us (I never realised how many variations of the same ten lines of pragmata
>> could coexist in the same folders).
>> Upon feedback from stakeholders of this sub-code base, the rules file was
>> altered to better suit their development needs, such as not removing
>> extraneous `do` keywords, as they are useful to introduce a block in which
>> debug statements can be easily inserted.
>>
>> Since today, the linting of the compiler code-base has been integrated in
>> our CI pipelines, without further burdening our CI times.
>> Things seem to run smoothly, and I welcome comments and requests of any
>> kind related to this area of our code quality process.
>>
>> Regarding our future plans, there has been a discussion about integrating
>> such a linting mechanism for our C code-base, in the RTS. Nothing is
>> formally established yet, so I would be grateful if people who have
>> experience and wisdom about it can chime in to contribute to the
>> discussion: https://gitlab.haskell.org/ghc/ghc/-/issues/19437.
>>
>> And I would like to say that I am overall very thankful for the involvement
>> of the people who have been giving us feedback and have been reviewing the
>> resulting MRs.
>>
>> Have a very nice day,
>> Hécate
>>
>> ---
>> [0]: https://github.com/ndmitchell/hlint
>> [1]: https://gitlab.haskell.org/ghc/ghc/-/issues/18424
>> [2]: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4147
>>
>> --
>> Hécate ✨
>> 🐦: @TechnoEmpress
>> IRC: Uniaika
>> WWW: https://glitchbra.in
>> RUN: BSD
>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20210326/085d1f61/attachment.html>
More information about the ghc-devs
mailing list