<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<div dir="auto">
<div dir="auto">Hi Richard,</div><div dir="auto"><br></div><div dir="auto">I am sorry, I have indeed forgotten one of the most important parts of my email. :)</div><div dir="auto"><br></div><div dir="auto">The Hadrian rules are </div><div dir="auto"><br></div><div dir="auto"><span style="font-family: Courier New, Courier, Liberation Mono, monospace;">lint:base</span></div><div dir="auto"><span style="font-family: Courier New, Courier, Liberation Mono, monospace;">lint:compiler</span></div><div dir="auto"><span style="font-family: Courier New, Courier, Liberation Mono, monospace;"><br></span></div><div dir="auto"><span style="font-family: sans-serif;">You can invoke them as simply as:</span></div><div dir="auto"><span style="font-family: Courier New, Courier, Liberation Mono, monospace;"><br></span></div><div dir="auto"><span style="font-family: Courier New, Courier, Liberation Mono, monospace;">./hadrian/build lint:base</span></div><div dir="auto"><span style="font-family: Courier New, Courier, Liberation Mono, monospace;"><br></span></div><div dir="auto"><span style="font-family: Courier New, Courier, Liberation Mono, monospace;"><br></span></div><div dir="auto">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.</div><div dir="auto"><br></div><div dir="auto">Hope it clarified things!</div><div dir="auto"><br></div><div dir="auto">Cheers,</div><div dir="auto">Hécate</div><div dir="auto"><br></div>
<div id="aqm-original" style="color: black;">
<div dir="auto">Le 25 mars 2021 21:39:15 Richard Eisenberg <rae@richarde.dev> a écrit :</div>
<div><br></div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #808080; padding-left: 0.75ex;">
<div dir="auto">Thanks for this update! Glad to know this effort is going well.</div>
<div dir="auto"><br></div>
<div dir="auto">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)?</div>
<div dir="auto"><br></div>
<div dir="auto">Thanks!</div>
<div dir="auto">Richard</div>
<div dir="auto"><br></div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #0099CC; padding-left: 0.75ex;">
<div dir="auto">On Mar 25, 2021, at 11:19 AM, Hécate <hecate@glitchbra.in> wrote:</div>
<div dir="auto"><br></div>
<div dir="auto">Hello fellow devs,</div>
<div dir="auto"><br></div>
<div dir="auto">this email is an activity report on the integration of the HLint[0] tool in the Continuous Integration (CI) pipelines.</div>
<div dir="auto"><br></div>
<div dir="auto">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.</div>
<div dir="auto"><br></div>
<div dir="auto">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).</div>
<div dir="auto">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.</div>
<div dir="auto">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).</div>
<div dir="auto">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.</div>
<div dir="auto"><br></div>
<div dir="auto">Since today, the linting of the compiler code-base has been integrated in our CI pipelines, without further burdening our CI times.</div>
<div dir="auto">Things seem to run smoothly, and I welcome comments and requests of any kind related to this area of our code quality process.</div>
<div dir="auto"><br></div>
<div dir="auto">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.</div>
<div dir="auto"><br></div>
<div dir="auto">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.</div>
<div dir="auto"><br></div>
<div dir="auto">Have a very nice day,</div>
<div dir="auto">Hécate</div>
<div dir="auto"><br></div>
<div dir="auto">---</div>
<div dir="auto">[0]: https://github.com/ndmitchell/hlint</div>
<div dir="auto">[1]: https://gitlab.haskell.org/ghc/ghc/-/issues/18424</div>
<div dir="auto">[2]: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4147</div>
<div dir="auto"><br></div>
<div dir="auto">-- </div>
<div dir="auto">Hécate ✨</div>
<div dir="auto">🐦: @TechnoEmpress</div>
<div dir="auto">IRC: Uniaika</div>
<div dir="auto">WWW: https://glitchbra.in</div>
<div dir="auto">RUN: BSD</div>
<div dir="auto"><br></div>
<div dir="auto">_______________________________________________</div>
<div dir="auto">ghc-devs mailing list</div>
<div dir="auto">ghc-devs@haskell.org</div>
<div dir="auto">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</div>
</blockquote>
</blockquote>
</div><div dir="auto"><br></div>
</div></body>
</html>