History

checkpatch: warn for non-standard fixes tag style

Add a warning for fixes tags that does not follow community conventions.

Niklas Söderlund committed 4 years ago

Commit bd17e031 parent 462cd772 files · +51 −0Browse files

Unified · Split

2 files
  1. Documentation/dev-tools/checkpatch.rst +7 −0
  2. scripts/checkpatch.pl +44 −0
Documentation/dev-tools/checkpatch.rst+7−0
@@ -612,6 +612,13 @@ Commit message · 611 unmodified lines
612 612
613 See: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes613 See: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes
614 614
615 **BAD_FIXES_TAG**
616 The Fixes: tag is malformed or does not follow the community conventions.
617 This can occur if the tag have been split into multiple lines (e.g., when
618 pasted in an email program with word wrapping enabled).
619
620 See: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes
621
615 622
616Comparison style623Comparison style
617----------------624----------------
scripts/checkpatch.pl+44−0
@@ -3146,6 +3146,50 @@ sub process { · 3145 unmodified lines
3146 }3146 }
3147 }3147 }
3148 3148
3149# Check Fixes: styles is correct
3150 if (!$in_header_lines &&
3151 $line =~ /^\s*fixes:?\s*(?:commit\s*)?[0-9a-f]{5,}\b/i) {
3152 my $orig_commit = "";
3153 my $id = "0123456789ab";
3154 my $title = "commit title";
3155 my $tag_case = 1;
3156 my $tag_space = 1;
3157 my $id_length = 1;
3158 my $id_case = 1;
3159 my $title_has_quotes = 0;
3160
3161 if ($line =~ /(\s*fixes:?)\s+([0-9a-f]{5,})\s+($balanced_parens)/i) {
3162 my $tag = $1;
3163 $orig_commit = $2;
3164 $title = $3;
3165
3166 $tag_case = 0 if $tag eq "Fixes:";
3167 $tag_space = 0 if ($line =~ /^fixes:? [0-9a-f]{5,} ($balanced_parens)/i);
3168
3169 $id_length = 0 if ($orig_commit =~ /^[0-9a-f]{12}$/i);
3170 $id_case = 0 if ($orig_commit !~ /[A-F]/);
3171
3172 # Always strip leading/trailing parens then double quotes if existing
3173 $title = substr($title, 1, -1);
3174 if ($title =~ /^".*"$/) {
3175 $title = substr($title, 1, -1);
3176 $title_has_quotes = 1;
3177 }
3178 }
3179
3180 my ($cid, $ctitle) = git_commit_info($orig_commit, $id,
3181 $title);
3182
3183 if ($ctitle ne $title || $tag_case || $tag_space ||
3184 $id_length || $id_case || !$title_has_quotes) {
3185 if (WARN("BAD_FIXES_TAG",
3186 "Please use correct Fixes: style 'Fixes: <12 chars of sha1> (\"<title line>\")' - ie: 'Fixes: $cid (\"$ctitle\")'\n" . $herecurr) &&
3187 $fix) {
3188 $fixed[$fixlinenr] = "Fixes: $cid (\"$ctitle\")";
3189 }
3190 }
3191 }
3192
3149# Check email subject for common tools that don't need to be mentioned3193# Check email subject for common tools that don't need to be mentioned
3150 if ($in_header_lines &&3194 if ($in_header_lines &&
3151 $line =~ /^Subject:.*\b(?:checkpatch|sparse|smatch)\b[^:]/i) {3195 $line =~ /^Subject:.*\b(?:checkpatch|sparse|smatch)\b[^:]/i) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t