Subject: Re: [PATCH v2 0/4] various: use iwyu (include-what-you-use) to analyze includes

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Wed, 06 Apr 2022 09:54:15 +0200

On Tue, Apr 05 2022, Garrit Franke wrote:

> On 01.04.22 10:07, Ãƒâ€ var ArnfjÃƒÂ¶rÃƒÂ° Bjarmason wrote:

Aside: I don't think I've ever seen encoded quoted-printable go quite so
bad so fast. That went from =C3=86var to =C3=83=C6=92=C3=A2=E2=82=AC in
one reply. Whatever your E-Mail is doing with encodings seems to be
taking multiple passes through misencodings :)

Don't worry about getting the name "right" or whatever, I'm amused by
the encoding issue...

>> ... For anyone interested in pursuing this, I think using the excellent
>> include-what-you-use tool would be a nice start.
>>
>> We could even eventually add it to our CI if the false positive rate
>> isn't bad (I haven't checked much):
>> https://github.com/include-what-you-use/include-what-you-use
>
> This seems to be a really nice tool indeed. I wouldn't be comfortable
> adding it to the CI just yet, but it did make it considerably easier to
> spot includes that could safely be removed.

Re the reply I had on 1/4 I think it's probably best to drop that in its
current form, but the fixes themselves (perhaps with a re-roll for nits
I posted in reply) seem good.

I was really hoping though that if someone wanted to pursue this a bit
more we'd get to the point of being able to run "make all test" on a
source tree that iwyu would munge with all its suggestions, and then see
if it outright failed to compile, or whether it would e.g. have faster
compilation speed (or not..).

> I think we could try battle-testing this tool in the codebase to get a
> sense of how it behaves. To start, I added your reference-command to a
> script under "contrib/iwyu" and ran it against the files you noted.
> Before breaking a bulk of the files, I wanted to make sure that this
> undertaking is headed in the right direction.

Even if the patches aren't sent in making the actual changes a one-off
script to e.g. wrap the fix_includes.py script I mentioned would be very
interesting.

We could then even run that in CI with relatively little setup,
i.e. checkout <rev>, do munging, then compile.