Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75ad8c57 authored by Jerome Forissier's avatar Jerome Forissier Committed by Linus Torvalds
Browse files

checkpatch: add --typedefsfile

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: default avatarJerome Forissier <jerome.forissier@linaro.org>
Cc: Joe Perches <joe@perches.com>
Cc: Andy Whitcroft <apw@canonical.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1b4a2ed4
Loading
Loading
Loading
Loading
+35 −17
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ my $spelling_file = "$D/spelling.txt";
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;

@@ -113,6 +114,7 @@ Options:
  --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

@@ -208,6 +210,7 @@ GetOptions(
	'test-only=s'	=> \$tst_only,
	'codespell!'	=> \$codespell,
	'codespellfile=s'	=> \$codespellfile,
	'typedefsfile=s'	=> \$typedefsfile,
	'color!'	=> \$color,
	'h|help'	=> \$help,
	'version'	=> \$help
@@ -629,9 +632,11 @@ if ($codespell) {

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

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

	if (open(my $words, '<', $file)) {
		while (<$words>) {
			my $line = $_;

			$line =~ s/\s*\n?$//g;
@@ -640,17 +645,30 @@ if (open(my $conststructs, '<', $conststructsfile)) {
			next if ($line =~ m/^\s*#/);
			next if ($line =~ m/^\s*$/);
			if ($line =~ /\s/) {
			print("$conststructsfile: '$line' invalid - ignored\n");
				print("$file: '$line' invalid - ignored\n");
				next;
			}

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

	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)";