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

Showing the changes to scripts/checkpatch.pl (1 of 2 files). Show all

Unified · Split

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) {