diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bd67068..1e9b62a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,6 +8,7 @@ Changelog Yet another overdue... hotfix. Sorry this took so long. * The false positive for indented function parameters in namespaces was eradicated. +* build/include-what-you-use now recognizes c-style headers, such as for symbols from . (https://github.com/cpplint/cpplint/pull/306) 2.0 (2024-10-06) ================ diff --git a/cpplint.py b/cpplint.py index 7e8470a..76622f5 100755 --- a/cpplint.py +++ b/cpplint.py @@ -6226,12 +6226,14 @@ def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, for item in sublist]) # All the lines have been processed, report the errors found. - for required_header_unstripped in sorted(required, key=required.__getitem__): - template = required[required_header_unstripped][1] - if required_header_unstripped.strip('<>"') not in include_dict: - error(filename, required[required_header_unstripped][0], + for header in sorted(required, key=required.__getitem__): + template = required[header][1] + if (header.strip('<>"') not in include_dict + and not (header.strip('<>"')[0] == 'c' + and (header.strip('<>"')[1:] + '.h') in include_dict)): + error(filename, required[header][0], 'build/include_what_you_use', 4, - 'Add #include ' + required_header_unstripped + ' for ' + template) + 'Add #include ' + header + ' for ' + template) _RE_PATTERN_EXPLICIT_MAKEPAIR = re.compile(r'\bmake_pair\s*<') diff --git a/cpplint_unittest.py b/cpplint_unittest.py index d5f126d..08eb375 100755 --- a/cpplint_unittest.py +++ b/cpplint_unittest.py @@ -1123,6 +1123,9 @@ def testIncludeWhatYouUse(self): self.TestIncludeWhatYouUse( 'printf("hello world");', 'Add #include for printf [build/include_what_you_use] [4]') + self.TestIncludeWhatYouUse( + """#include + printf("hello world");""", '') # Avoid false positives w/ c-style include self.TestIncludeWhatYouUse( 'void a(const string &foobar);', 'Add #include for string [build/include_what_you_use] [4]') diff --git a/samples/vlc-sample/simple.def b/samples/vlc-sample/simple.def index 19c9563..174819e 100644 --- a/samples/vlc-sample/simple.def +++ b/samples/vlc-sample/simple.def @@ -4,7 +4,7 @@ src/* Done processing src/libvlc.c Done processing src/libvlc.h Done processing src/missing.c -Total errors found: 602 +Total errors found: 601 src/libvlc.c:41: Found C system header after other header. Should be: libvlc.h, c system, c++ system, other. [build/include_order] [4] src/libvlc.c:47: Found C system header after other header. Should be: libvlc.h, c system, c++ system, other. [build/include_order] [4] @@ -367,7 +367,6 @@ src/libvlc.c:627: Missing space before ( in if( [whitespace/parens] [5] src/libvlc.c:629: Extra space after ( in function call [whitespace/parens] [4] src/libvlc.c:629: Extra space before ) [whitespace/parens] [2] src/libvlc.c:640: { should almost always be at the end of the previous line [whitespace/braces] [4] -src/libvlc.c:223: Add #include for fclose [build/include_what_you_use] [4] src/libvlc.h:0: No #ifndef header guard found, suggested CPP variable is: SAMPLES_VLC_SAMPLE_SRC_LIBVLC_H_ [build/header_guard] [5] src/libvlc.h:34: Extra space before ( in function call [whitespace/parens] [4] src/libvlc.h:35: Extra space before ( in function call [whitespace/parens] [4]