Options:
-q, --quiet quiet
- --no-tree run without a kernel tree
+ --no-tree run without a openocd tree
--no-signoff do not check for 'Signed-off-by' line
--patch treat FILE as patchfile (default)
--emacs emacs compile window format
--subjective, --strict enable more subjective tests
--ignore TYPE(,TYPE2...) ignore various comma separated message types
--show-types show the message "types" in the output
- --root=PATH PATH to the kernel tree root
+ --root=PATH PATH to the openocd tree root
--no-summary suppress the per-file summary
--mailback only produce a report in case of warnings/errors
--summary-file include the filename in summary
} else {
if (top_of_kernel_tree('.')) {
$root = '.';
- } elsif ($0 =~ m@(.*)/scripts/[^/]*$@ &&
+ } elsif ($0 =~ m@(.*)/tools/scripts/[^/]*$@ &&
top_of_kernel_tree($1)) {
$root = $1;
}
}
if (!defined $root) {
- print "Must be run from the top-level dir. of a kernel tree\n";
+ print "Must be run from the top-level dir. of a openocd tree\n";
exit(2);
}
}
[a-z0-9]+_(?:printk|emerg|alert|crit|err|warning|warn|notice|info|debug|dbg|vdbg|devel|cont|WARN)(?:_ratelimited|_once|)|
WARN(?:_RATELIMIT|_ONCE|)|
panic|
- MODULE_[A-Z_]+
+ MODULE_[A-Z_]+|
+ LOG_(?:DEBUG|INFO|WARNING|ERROR|USER|USER_N|OUTPUT)+
)};
our $signature_tags = qr{(?xi:
my ($root) = @_;
my @tree_check = (
- "COPYING", "CREDITS", "Kbuild", "MAINTAINERS", "Makefile",
- "README", "Documentation", "arch", "include", "drivers",
- "fs", "init", "ipc", "kernel", "lib", "scripts",
+ "AUTHORS", "BUGS", "COPYING", "HACKING", "Makefile.am",
+ "README", "contrib", "doc", "src", "tcl", "testing", "tools",
);
foreach my $check (@tree_check) {
$address = "";
$comment = "";
}
+ } elsif ($formatted_email eq "jenkins") {
+ $address = "jenkins"
}
$name =~ s/^\s+|\s+$//g;
if ($c eq "\t") {
$res .= ' ';
$n++;
- for (; ($n % 8) != 0; $n++) {
+ for (; ($n % 4) != 0; $n++) {
$res .= ' ';
}
next;
$rpt_cleaners = 1;
}
+ if ($rawline =~ /\bwrite to the Free/i ||
+ $rawline =~ /\b59\s+Temple\s+Pl/i ||
+ $rawline =~ /\b51\s+Franklin\s+St/i) {
+ my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+ my $msg_type = \&ERROR;
+ ERROR("Do not include the paragraph about writing to the Free Software Foundation's mailing address from the sample GPL notice. The FSF has changed addresses in the past, and may do so again. Linux already includes a copy of the GPL.\n" . $herevet)
+ }
+
# check for Kconfig help text having a real description
# Only applies when adding the entry originally, after that we do not have
# sufficient context to determine whether it is indeed long enough.
# check we are in a valid source file if not then ignore this hunk
next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);
-#100 column limit
+#120 column limit
if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ &&
$rawline !~ /^.\s*\*\s*\@$Ident\s/ &&
!($line =~ /^\+\s*$logFunctions\s*\(\s*(?:(KERN_\S+\s*|[^"]*))?"[X\t]*"\s*(?:|,|\)\s*;)\s*$/ ||
$line =~ /^\+\s*"[^"]*"\s*(?:\s*|,|\)\s*;)\s*$/) &&
- $length > 100)
+ $length > 120)
{
WARN("LONG_LINE",
- "line over 100 characters\n" . $herecurr);
+ "line over 120 characters\n" . $herecurr);
}
# check for spaces before a quoted newline
"please, no space before tabs\n" . $herevet);
}
+# check we are in a valid C source file if not then ignore this hunk
+ next if ($realfile !~ /\.(h|c)$/);
+
# check for spaces at the beginning of a line.
# Exceptions:
# 1) within comments
"please, no spaces at the start of a line\n" . $herevet);
}
-# check we are in a valid C source file if not then ignore this hunk
- next if ($realfile !~ /\.(h|c)$/);
-
# check for RCS/CVS revision markers
if ($rawline =~ /^\+.*\$(Revision|Log|Id)(?:\$|)/) {
WARN("CVS_KEYWORD",
# Check for switch () and associated case and default
# statements should be at the same indent.
- if ($line=~/\bswitch\s*\(.*\)/) {
- my $err = '';
- my $sep = '';
- my @ctx = ctx_block_outer($linenr, $realcnt);
- shift(@ctx);
- for my $ctx (@ctx) {
- my ($clen, $cindent) = line_stats($ctx);
- if ($ctx =~ /^\+\s*(case\s+|default:)/ &&
- $indent != $cindent) {
- $err .= "$sep$ctx\n";
- $sep = '';
- } else {
- $sep = "[...]\n";
- }
- }
- if ($err ne '') {
- ERROR("SWITCH_CASE_INDENT_LEVEL",
- "switch and case should be at the same indent\n$hereline$err");
- }
- }
+# if ($line=~/\bswitch\s*\(.*\)/) {
+# my $err = '';
+# my $sep = '';
+# my @ctx = ctx_block_outer($linenr, $realcnt);
+# shift(@ctx);
+# for my $ctx (@ctx) {
+# my ($clen, $cindent) = line_stats($ctx);
+# if ($ctx =~ /^\+\s*(case\s+|default:)/ &&
+# $indent != $cindent) {
+# $err .= "$sep$ctx\n";
+# $sep = '';
+# } else {
+# $sep = "[...]\n";
+# }
+# }
+# if ($err ne '') {
+# ERROR("SWITCH_CASE_INDENT_LEVEL",
+# "switch and case should be at the same indent\n$hereline$err");
+# }
+# }
# if/while/etc brace do not go on next line, unless defining a do while loop,
# or if that brace on the next line is for something else
#print "line<$line> prevline<$prevline> indent<$indent> sindent<$sindent> check<$check> continuation<$continuation> s<$s> cond_lines<$cond_lines> stat_real<$stat_real> stat<$stat>\n";
- if ($check && (($sindent % 8) != 0 ||
+ if ($check && (($sindent % 4) != 0 ||
($sindent <= $indent && $s ne ''))) {
WARN("SUSPECT_CODE_INDENT",
"suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n");
# check for new typedefs, only function parameters and sparse annotations
# make sense.
- if ($line =~ /\btypedef\s/ &&
- $line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ &&
- $line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ &&
- $line !~ /\b$typeTypedefs\b/ &&
- $line !~ /\b__bitwise(?:__|)\b/) {
- WARN("NEW_TYPEDEFS",
- "do not add new typedefs\n" . $herecurr);
- }
+# if ($line =~ /\btypedef\s/ &&
+# $line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ &&
+# $line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ &&
+# $line !~ /\b$typeTypedefs\b/ &&
+# $line !~ /\b__bitwise(?:__|)\b/) {
+# WARN("NEW_TYPEDEFS",
+# "do not add new typedefs\n" . $herecurr);
+# }
# * goes on variable not on type
# (char*[ const])
}
# no volatiles please
- my $asm_volatile = qr{\b(__asm__|asm)\s+(__volatile__|volatile)\b};
- if ($line =~ /\bvolatile\b/ && $line !~ /$asm_volatile/) {
- WARN("VOLATILE",
- "Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr);
- }
+# my $asm_volatile = qr{\b(__asm__|asm)\s+(__volatile__|volatile)\b};
+# if ($line =~ /\bvolatile\b/ && $line !~ /$asm_volatile/) {
+# WARN("VOLATILE",
+# "Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr);
+# }
# warn about #if 0
if ($line =~ /^.\s*\#\s*if\s+0\b/) {
}
# Check for __attribute__ packed, prefer __packed
- if ($line =~ /\b__attribute__\s*\(\s*\(.*\bpacked\b/) {
- WARN("PREFER_PACKED",
- "__packed is preferred over __attribute__((packed))\n" . $herecurr);
- }
+# if ($line =~ /\b__attribute__\s*\(\s*\(.*\bpacked\b/) {
+# WARN("PREFER_PACKED",
+# "__packed is preferred over __attribute__((packed))\n" . $herecurr);
+# }
# Check for __attribute__ aligned, prefer __aligned
- if ($line =~ /\b__attribute__\s*\(\s*\(.*aligned/) {
- WARN("PREFER_ALIGNED",
- "__aligned(size) is preferred over __attribute__((aligned(size)))\n" . $herecurr);
- }
+# if ($line =~ /\b__attribute__\s*\(\s*\(.*aligned/) {
+# WARN("PREFER_ALIGNED",
+# "__aligned(size) is preferred over __attribute__((aligned(size)))\n" . $herecurr);
+# }
# check for sizeof(&)
if ($line =~ /\bsizeof\s*\(\s*\&/) {
}
# check for new externs in .c files.
- if ($realfile =~ /\.c$/ && defined $stat &&
- $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s)
- {
- my $function_name = $1;
- my $paren_space = $2;
-
- my $s = $stat;
- if (defined $cond) {
- substr($s, 0, length($cond), '');
- }
- if ($s =~ /^\s*;/ &&
- $function_name ne 'uninitialized_var')
- {
- WARN("AVOID_EXTERNS",
- "externs should be avoided in .c files\n" . $herecurr);
- }
-
- if ($paren_space =~ /\n/) {
- WARN("FUNCTION_ARGUMENTS",
- "arguments for function declarations should follow identifier\n" . $herecurr);
- }
-
- } elsif ($realfile =~ /\.c$/ && defined $stat &&
- $stat =~ /^.\s*extern\s+/)
- {
- WARN("AVOID_EXTERNS",
- "externs should be avoided in .c files\n" . $herecurr);
- }
+# if ($realfile =~ /\.c$/ && defined $stat &&
+# $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s)
+# {
+# my $function_name = $1;
+# my $paren_space = $2;
+#
+# my $s = $stat;
+# if (defined $cond) {
+# substr($s, 0, length($cond), '');
+# }
+# if ($s =~ /^\s*;/ &&
+# $function_name ne 'uninitialized_var')
+# {
+# WARN("AVOID_EXTERNS",
+# "externs should be avoided in .c files\n" . $herecurr);
+# }
+#
+# if ($paren_space =~ /\n/) {
+# WARN("FUNCTION_ARGUMENTS",
+# "arguments for function declarations should follow identifier\n" . $herecurr);
+# }
+#
+# } elsif ($realfile =~ /\.c$/ && defined $stat &&
+# $stat =~ /^.\s*extern\s+/)
+# {
+# WARN("AVOID_EXTERNS",
+# "externs should be avoided in .c files\n" . $herecurr);
+# }
# checks for new __setup's
if ($rawline =~ /\b__setup\("([^"]*)"/) {
$vname has style problems, please review.
If any of these errors are false positives, please report
-them to the maintainer, see CHECKPATCH in MAINTAINERS.
+them to the openocd-devel mailing list or prepare a patch
+and send it to Gerrit for review.
EOM
}