From b48aa1437df1d438d39d7c798ef93e0854911022 Mon Sep 17 00:00:00 2001 From: Ilya Maximets Date: Fri, 18 Jan 2019 17:46:04 +0300 Subject: [PATCH] checkpatch: Check for C99 style comments. Coding-style document asks not to use C99 ( '//' ) comments. Acked-by: Aaron Conole Signed-off-by: Ilya Maximets Signed-off-by: Ben Pfaff --- tests/checkpatch.at | 23 +++++++++++++++++++++++ utilities/checkpatch.py | 11 +++++++++++ 2 files changed, 34 insertions(+) diff --git a/tests/checkpatch.at b/tests/checkpatch.at index 3c321633f..17976dfbb 100755 --- a/tests/checkpatch.at +++ b/tests/checkpatch.at @@ -287,3 +287,26 @@ try_checkpatch \ " AT_CLEANUP + + +AT_SETUP([checkpatch - comments]) +try_checkpatch \ + "COMMON_PATCH_HEADER + + a = 1; /* C style comment. */ + " + +try_checkpatch \ + "COMMON_PATCH_HEADER + + /* http://URL/inside/the/comment.html */ + " + +try_checkpatch \ + "COMMON_PATCH_HEADER + + a = 1; // C99 style comment. + " \ + "ERROR: C99 style comment + #8 FILE: A.c:1: + a = 1; // C99 style comment. +" + +AT_CLEANUP diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py index 57ef5e6f3..8eab31f60 100755 --- a/utilities/checkpatch.py +++ b/utilities/checkpatch.py @@ -163,6 +163,7 @@ __regex_ends_with_bracket = \ __regex_ptr_declaration_missing_whitespace = re.compile(r'[a-zA-Z0-9]\*[^*]') __regex_is_comment_line = re.compile(r'^\s*(/\*|\*\s)') __regex_has_comment = re.compile(r'.*(/\*|\*\s)') +__regex_has_c99_comment = re.compile(r'.*//.*$') __regex_trailing_operator = re.compile(r'^[^ ]* [^ ]*[?:]$') __regex_conditional_else_bracing = re.compile(r'^\s*else\s*{?$') __regex_conditional_else_bracing2 = re.compile(r'^\s*}\selse\s*$') @@ -298,6 +299,11 @@ def has_comment(line): return __regex_has_comment.match(line) is not None +def has_c99_comment(line): + """Returns TRUE if the current line contains C99 style comment (//).""" + return __regex_has_c99_comment.match(line) is not None + + def trailing_operator(line): """Returns TRUE if the current line ends with an operatorsuch as ? or :""" return __regex_trailing_operator.match(line) is not None @@ -545,6 +551,11 @@ checks = [ 'check': lambda x: has_xxx_mark(x), 'print': lambda: print_warning("Comment with 'xxx' marker")}, + {'regex': r'(\.c|\.h)(\.in)?$', 'match_name': None, + 'prereq': lambda x: not is_comment_line(x), + 'check': lambda x: has_c99_comment(x), + 'print': lambda: print_error("C99 style comment")}, + {'regex': r'(\.c|\.h)(\.in)?$', 'match_name': None, 'prereq': lambda x: has_comment(x), 'check': lambda x: check_comment_spelling(x)}, -- 2.39.5