[Linux-kernel-mentees] [PATCH v2] checkpatch: add fix option for COMMIT_LOG_LONG_LINE
Aditya
yashsri421 at gmail.com
Sun Nov 8 14:31:36 UTC 2020
On 8/11/20 12:52 pm, Lukas Bulwahn wrote:
>
>
> On Sun, 8 Nov 2020, Aditya wrote:
>>>
>>> Why do you not implement a proper word wrap function?
>>>
>>
>> Actually, I had searched on the web regarding it before implementation.
>> Here I have implemented text wrap only and regex is the best way I
>> could find of implementing it. Also the same was advised at
>> stackoverflow. I took help from the same.
>> Link:
>> https://stackoverflow.com/questions/956379/how-can-i-word-wrap-a-string-in-perl
>
> And stackoverflow is not always a good reference.
>
>> Apart from it, perl also provides a wrap function using module
>> Text::Wrap, but I wasn't sure if I could use this module in my
>> changes. So, I proceeded with regex.
>>
>
> You can look into that, understand it a bit and then just implement a word
> wrap from scratch as we would need it here in checkpatch.pl, it should not
> be that complicated.
>
Okay.
>>> A single commit tells us very little if this rule in checkpatch.pl really
>>> is a good rule or not. A proper evaluation of typical cases of long commit
>>> lines would help much more to improve this rule.
>>>
>>
>> I generated a list of commit_long_long_line warnings with the line for
>> which they are occurring at:(v4.13..v5.8)
>> https://github.com/AdityaSrivast/kernel-tasks/blob/master/Task6/summary.txt
>>
>> As I could see, most of these messages are plain english. But there
>> are few instances of links, hex, file locations, such as:
>>
>
> I see many false positive warnings; so most are cases where I would not
> break the line.
>
>> 1)https://lore.kernel.org/lkml/1559767582-11081-1-git-send-email-info@metux.net/
>>
>
> How about detecting all likely URLs and suggesting a proper Link: tag in
> front of them?
>
Should we add another warning description for this one? Or while
fixing, just prefix it with 'Link:'?
>> 2) /home6/tmricht/linux-next/tools/build/Makefile.build:96: recipe
>> for target 'libbpf.o' failed
>>
>> 3) 8b 35 7b fb e2 00 mov 0xe2fb7b(%rip),%esi # ffffffff82db9e64
>> <nr_cpu_ids>
>>
>> I think we can use a better regex like:
>> s/(.{1,75}|\S{76,})(?:\s[^\S\r\n]*|\Z)/$1\n/g
>>
>> I tested this regex with the above cases, in which
>> 1) remains unaffected
>> 2) gets wrapped at "..recipe for" (which is 69 chars in length)
>> 3) gets wrapped at "# ffffffff82db9e64", which is 64 in length
>>
>> I guess I can generate another file with how these lines will be
>> changed, when used with fix option.
>> What do you think?
>>
>
> I think 1, 2 and 3 should not be wrapped.
>
> 1) should be fixed by adding a Link: prefix
Okay.
> 2) should be warned to just drop the absolute path or so.
We are already warning for the absolute path for this case. All these
warnings are emitted for:
Commit 1ce6a9fc1549 ("bpf: fix build error in libbpf with
EXTRA_CFLAGS="-Wp, -D_FORTIFY_SOURCE=2 -O2"")
I guess for (2), we can check if a line is reported by
USE_RELATIVE_PATH, we can omit it for long line warning
> 2) and 3) need to detected to be tool output and hence, we accept a longer
> line limit here.
>
So, we should wrap these lines after more characters? Or can we treat
them as false positives for this warning and just avoid checking such
lines for this class of warning?
> I also see a few tags and long commit log warnings.
>
> Does checkpatch.pl also warn on long tags? That should be excluded from
> that check.
>
Yes, checkpatch warns currently if we use long commit logs. Eg for
commit '47987970175 ("ASoC: Intel: create haswell folder and move
haswell platform files in")'
we get:
WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description
(prefer a maximum 75 chars per line)
#13:
commit ba57f68235cf ("ASoC: Intel: create haswell folder and move
haswell platform files in")
But probably it will be best if we can wrap these line. I feel so, as
users tend to use these along the common english lines, and not always
in a different line, such as:
- MC-aware mode was introduced to mlxsw in commit 7b8195306694
("mlxsw: spectrum:
for the commit f9d5b1d50840.
Also I feel that wrapping it might not affect readability as well. For
eg, I have wrapped the commit messages for my patches as well.
E.g., at,
https://lore.kernel.org/lkml/20201030114447.24199-1-yashsri421@gmail.com/
I wrapped the 'E.g.' line which describes that I ran checkpatch.pl,
and contains the commit message.
What do you think?
> Also, I noticed quite a few 'References: <git-sha> ("<git commit
> message>")'. I think there is no standard for this yet, but maybe that is
> worth a discussion to agree on something and then add documentation and a
> check for that.
>
Thanks for pointing it out. I observed all the lines prefixed by
'References' and found out that they are either followed by link or
commit log, except once ie
"I/O hangs after resuming from suspend-to-ram"
(https://marc.info/?l=linux-block&m=150340235201348).
Here user is probably quoting his line and referencing it to the link
where he might have seen it.
I guess we can either avoid the line prefixed with 'References:'
completely or selectively avoid links and treat commit logs similar to
whatever we decide for above.
Thanks
Aditya
More information about the Linux-kernel-mentees
mailing list