Messages in this thread Patch in this message | | | Date | Tue, 9 Apr 2013 13:26:03 +0200 | From | Matthijs Kooijman <> | Subject | [PATCH v2] checkpatch: Check block comments outside of net |
| |
There was some code checking block comments in net/ and drivers/net/, but nothing for regular comments.
The end of a block comment is the same as inside net, so that check can just be generalized.
The start of block comment must not have any comment after the leading /*, which requires a new check.
Tested with:
$ cat test.c /* foo */
/* * foo */
/* foo */
/* foo * bar */
/** * foo * bar */
/**************************** * some long block comment ****************************/
struct foo { int bar; /* another test */ };
$ ./scripts/checkpatch.pl -f test.c WARNING: block comments put the leading /* on a separate line + +/* foo
WARNING: block comments put the leading /* on a separate line + +/* foo
WARNING: block comments put the trailing */ on a separate line + * bar */
WARNING: block comments put the leading /* on a separate line + +/**
WARNING: block comments put the leading /* on a separate line + +/****************************
total: 0 errors, 5 warnings, 25 lines checked Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl> --- scripts/checkpatch.pl | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
Note that this patch rejects /** comments, since those are not mentioned in Codingstyle. They are used in practice though (around 1000 occurences in kernel/ alone), so perhaps they should be allowed and documented?
Also, the new check only fires when the previous line is empty, just like the start of block comment check for net/. However, I couldn't find any documentation on why this restriction is needed?
v2 makes a change to the error message and adds a comment I forgot to commit when creating this patch.
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index b28cc38..458cdbf 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -1884,13 +1884,21 @@ sub process { "networking block comments don't use an empty /* line, use /* Comment...\n" . $hereprev); } - if ($realfile =~ m@^(drivers/net/|net/)@ && - $rawline !~ m@^\+[ \t]*\*/[ \t]*$@ && #trailing */ + if ($realfile !~ m@^(drivers/net/|net/)@ && + $rawline !~ m@^\+.*/\*.*\*/[ \t]*$@ && #inline /*...*/ + $rawline !~ /^\+[ \t]*\/\*[ \t]*$/ && #blank /* + $rawline =~ /^\+[ \t]*\/\*.+$/ && #non blank /* + $prevrawline =~ /^\+[ \t]*$/) { + WARN("BLOCK_COMMENT_STYLE", + "block comments put the leading /* on a separate line\n" . $hereprev); + } + + if ($rawline !~ m@^\+[ \t]*\*/[ \t]*$@ && #trailing */ $rawline !~ m@^\+.*/\*.*\*/[ \t]*$@ && #inline /*...*/ $rawline !~ m@^\+.*\*{2,}/[ \t]*$@ && #trailing **/ $rawline =~ m@^\+[ \t]*.+\*\/[ \t]*$@) { #non blank */ - WARN("NETWORKING_BLOCK_COMMENT_STYLE", - "networking block comments put the trailing */ on a separate line\n" . $herecurr); + WARN("BLOCK_COMMENT_STYLE", + "block comments put the trailing */ on a separate line\n" . $herecurr); } # check for spaces at the beginning of a line. -- 1.8.0
| |