Add a warning for fixes tags that does not follow community conventions.
Showing the changes to scripts/checkpatch.pl (1 of 2 files). Show all
Unified · Split
| @@ -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 | 3193 | # Check email subject for common tools that don't need to be mentioned |
| 3150 | 3194 | if ($in_header_lines && |
| 3151 | 3195 | $line =~ /^Subject:.*\b(?:checkpatch|sparse|smatch)\b[^:]/i) { |