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