Skip to content

Commit

Permalink
checkpatch: add --typedefsfile
Browse files Browse the repository at this point in the history
When using checkpatch on out-of-tree code, it may occur that some
project-specific types are used, which will cause spurious warnings.
Add the --typedefsfile option as a way to extend the known types and
deal with this issue.

This was developed for OP-TEE [1].  We run a Travis job on all pull
requests [2], and checkpatch is part of that.  The typical false warning
we get on a regular basis is with some pointers to functions returning
TEE_Result [3], which is a typedef from the GlobalPlatform APIs.  We
consider it is acceptable to use GP types in the OP-TEE core
implementation, that's why this patch would be helpful for us.

[1] https://github.com/OP-TEE/optee_os
[2] https://travis-ci.org/OP-TEE/optee_os/builds
[3] https://travis-ci.org/OP-TEE/optee_os/builds/193355335#L1733

Link: http://lkml.kernel.org/r/ba1124d6dfa599bb0dd1d8919dd45dd09ce541a4.1492702192.git.jerome.forissier@linaro.org
Signed-off-by: Jerome Forissier <[email protected]>
Cc: Joe Perches <[email protected]>
Cc: Andy Whitcroft <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
jforissier authored and torvalds committed May 9, 2017
1 parent 1b4a2ed commit 75ad8c5
Showing 1 changed file with 35 additions and 17 deletions.
52 changes: 35 additions & 17 deletions scripts/checkpatch.pl
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
my $codespell = 0;
my $codespellfile = "/usr/share/codespell/dictionary.txt";
my $conststructsfile = "$D/const_structs.checkpatch";
my $typedefsfile = "";
my $color = 1;
my $allow_c99_comments = 1;

Expand Down Expand Up @@ -113,6 +114,7 @@ sub help {
--codespell Use the codespell dictionary for spelling/typos
(default:/usr/share/codespell/dictionary.txt)
--codespellfile Use this codespell dictionary
--typedefsfile Read additional types from this file
--color Use colors when output is STDOUT (default: on)
-h, --help, --version display this help and exit
Expand Down Expand Up @@ -208,6 +210,7 @@ sub list_types {
'test-only=s' => \$tst_only,
'codespell!' => \$codespell,
'codespellfile=s' => \$codespellfile,
'typedefsfile=s' => \$typedefsfile,
'color!' => \$color,
'h|help' => \$help,
'version' => \$help
Expand Down Expand Up @@ -629,28 +632,43 @@ sub hash_show_words {

$misspellings = join("|", sort keys %spelling_fix) if keys %spelling_fix;

my $const_structs = "";
if (open(my $conststructs, '<', $conststructsfile)) {
while (<$conststructs>) {
my $line = $_;
sub read_words {
my ($wordsRef, $file) = @_;

$line =~ s/\s*\n?$//g;
$line =~ s/^\s*//g;
if (open(my $words, '<', $file)) {
while (<$words>) {
my $line = $_;

next if ($line =~ m/^\s*#/);
next if ($line =~ m/^\s*$/);
if ($line =~ /\s/) {
print("$conststructsfile: '$line' invalid - ignored\n");
next;
}
$line =~ s/\s*\n?$//g;
$line =~ s/^\s*//g;

$const_structs .= '|' if ($const_structs ne "");
$const_structs .= $line;
next if ($line =~ m/^\s*#/);
next if ($line =~ m/^\s*$/);
if ($line =~ /\s/) {
print("$file: '$line' invalid - ignored\n");
next;
}

$$wordsRef .= '|' if ($$wordsRef ne "");
$$wordsRef .= $line;
}
close($file);
return 1;
}
close($conststructsfile);
} else {
warn "No structs that should be const will be found - file '$conststructsfile': $!\n";

return 0;
}

my $const_structs = "";
read_words(\$const_structs, $conststructsfile)
or warn "No structs that should be const will be found - file '$conststructsfile': $!\n";

my $typeOtherTypedefs = "";
if (length($typedefsfile)) {
read_words(\$typeOtherTypedefs, $typedefsfile)
or warn "No additional types will be considered - file '$typedefsfile': $!\n";
}
$typeTypedefs .= '|' . $typeOtherTypedefs if ($typeOtherTypedefs ne "");

sub build_types {
my $mods = "(?x: \n" . join("|\n ", (@modifierList, @modifierListFile)) . "\n)";
Expand Down

0 comments on commit 75ad8c5

Please sign in to comment.