Added the ability to provide CPPLINT.cfg files to provide
linter message filters per sub-directory and special exclusion
rules. Each file can have instructions like:
filter=-build/include_order,+build/include_alpha
exclude_files=.*\.cc
The above disables build/include_order warning and enables
build/include_alpha as well as excludes all .cc from being
processed by linter, in the current directory (where the .cfg
file is located) and all sub-directories.
Patch by avakulenko@google.com.
Related CL: https://codereview.chromium.org/406373002/
Review URL: https://codereview.appspot.com/115340043
359 - Silence non-const reference warnings for derived functions.
357 - Remove the partial ban on std::move and related features.
More general use of rvalue references is still banned for now.
356 - Fixed false positive for << inside macros. Also recognize implicit
constructors of the form "Type(Type&& param)".
355 - Make _NestingState class public. Also adds a new method
NestingState.InAsmBlock, which returns true if the top of the stack
is a block containing inline ASM.
354 - Fixed false positive for multiline function templates.
353 - Fixed false positive for lambda capture.
352 - Silence RValue reference warnings that are enclosed in a
GOOGLE_ALLOW_RVALUE_REFERENCES_(PUSH|POP) range.
351 - Do not warn on CR-LF lines if all input lines are uniformly CR-LF.
349 - Fixed false positive for unnamed parameters in macros.
348 - Recognize &&... as RValue references.
347 - Use alternative error message for including <ostream>.
346 - Fixed false positive for function style template argument.
345 - Fixed false positive for braced constructor call inside brackets.
344 - Minor spelling and grammar fix.
343 - Fixed false positive for non-const reference check inside constructor
initializer lists.
342 - Fixed cases where rvalue references are not identified correctly:
- Parameter in a templated function.
- Parameter for a single-arg constructor.
- Return type in a templated function.
338 - Fixed false positive for deprecated cast where return type of
function template is const.
337 - Fixed false positive for alias-declarations of function pointers.
336 - Improved error message for taking address of something dereferenced
from a cast.
335 - Added support for C++14 digit separators
(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3781.pdf).
Not sure if the style guide would allow this feature or not, but
cpplint must recognize these one way or another to provide accurate
error messages.
333 - Fixed false positive for constructor calls for rand{} being
identified as calls to rand().
332 - Elide C++11 raw strings as an empty quoted string instead of an empty
string. This allows us to differentiate blank lines inside raw
strings from regular blank lines.
331 - Split up long functions in cpplint.py and cpplint_unittest.py.
This is a refactoring change with zero change in functionality,
the goal is to clean up new warnings.
330 - Fixed false positive for missing space check around "using operator;"
329 - Fixed false positive for indent check around multi-line raw strings.
328 - Added check missing spaces around ||. This check should have been
included in the original CheckSpaces. Added check for &&, and output
message for missing space or rvalue reference according to context.
327 - Fixed false positive for alias-declaration.
326 - Improved accuracy of matching parentheses and angle brackets.
Previously, if cpplint was trying to match () pairs, those two
characters are the only things that it looked for. This worked
reasonably well for everything except <>, which is easily confused
with operators. This change takes all other parentheses into account,
and do not count <> characters as angle brackets if they are inside
other parenthesized expressions.
325 - Fixed handling of multiple raw strings on the same line.
324 - Better enforcement that braces are used either around all branches of
the condition, or none. Checks for what seem to be multiple statements
in an single-line if/else body. Checks for ambigous if/if/else nesting
without braces.
323 - Fixed false positive for extra space in returning lambdas.
322 - Fixed false positive for tokens with "else" prefix being treated as
else keyword following a conditional block.
321 - Fixed false positive for placement new being treated as deprecated cast.
320 - Change lint so it no longer warns about use of std::function and related
features (bind, placeholders) now that function/bind is no longer banned.
319 - Fixed false positive for alignof and alignas being recognized as casts.
318 - Permit std::shared_ptr, std::weak_ptr and std::enable_shared_from_this.
317 - Silence deprecated cast warning for templates using function types as
the first argument
316 - Remove aligned_storage from the list of blacklisted C++11 features.
315 - Fixed false positive for casting to pointer types.
314 - Do not warn about single-arg constructors with std::initializer_list<>
not marked as explicit.
313 - Remove lint errors when including <atomic>.
312 - Fixed incorrect parsing of multiple block comments on the same line.
311 - Fixed nesting state parser for classes in template argument list.
310 - Fixed false positive for semicolon after brace for lambdas where there
is a newline between lambda-introducer and lambda-declarator.
308 - Fixed false positive for global string pointers being treated as string
values.
307 - Modify cpplint to follow updated style guide on comments in braced
initializer lists. In particular, don't warn about missing spaces
if the comment is aligned with the next line.
306 - Fixed false positive for brace initializer list in ternary expression.
305 - Fixed false positive for blank line at start of code block due to elided
raw string contents.
304 - Add a cpplint.py warning for default captures in lambda expressions.
303 - Recognize unordered_map and unordered_set.
302 - Fixed false positive for trailing semicolons when lambda-capture spans
multiple lines.
301 - Fixed false positive for trailing semicolon following lambdas.
300 - Fix raw string handling when the next raw string begins on the same line
that the previous raw string ends.
299 - Fix false C-style cast detection due to trailing "override".
298 - Fix false positive for requiring an argument name in a GMock declaration.
297 - Fixed false positives for blank line warnings near 'extern "C"' blocks.
R=erg@google.com
Review URL: https://codereview.appspot.com/108730043
The valid cpplint extensions are .h, .cpp, .cc, .cuh and .cu. It is
common for .hpp to be a valid extension to check, the --extensions flag
allows the user to specify which extensions they think are valid.
Patch by Matt Clarkson <mattyclarkson@gmail.com>
10: using ns::operator<<;
file.cpp:10: Missing spaces around << [whitespace/operators] [3]
The regular expression has been updated to find this valid use case of the <<
text string.
Review URL: https://codereview.appspot.com/22190043
Patch from Matt Clarkson <mattyclarkson@gmail.com>.
- Check for NUL bytes in the file.
- Fixed many false positives related to brace initialization.
- Improved accuracy of parsing reference template parameters.
- Added support for C++11 raw strings.
- Added CUDA extensions to those allowed by cpplint.
- Added check for incomplete namespaces.
- Silence warnings for missing spaces after comma due to elided
comments.
- Rephrased some messages so that they're actionable.
- Fix false positive on namespace qualified function pointer arguments.
- Fix false positive for operators which return strings.
- Revive the VLOG check.
R=mark@chromium.org
Review URL: https://codereview.appspot.com/17450043
- Handle parentheses in CHECK() calls properly.
- Fixed multiple false positives where various things like
std::fucntion<> or function pointers were being mistaken for casts.
- Fixed whitespace warning on placement new.
- Fixed multiple false positives related to const references.
- Added warning for empty conditional bodies.
- Stop advising the use of readdir_r instead of readdir.
- Fixed false positive for empty macro arguments.
- Fixed false positvie for braced initializer lists.
- Don't warn about unnamed parameters in function pointers.
R=mark@chromium.org
Review URL: https://codereview.appspot.com/17400043
- Check indentation of public/protected/private keywords.
- Remove RTTI warning.
- Silence warning about multiple inheritance from global namespace.
- Copy ctors don't need "explicit".
- Understand "const char* const&" as a const reference.
- Remove runtime/sizeof.
- Recognize the "catch" keyword.
- List C++11 headers
- Allow sscanf()
- Allow for one extra level of nesting in template class decls.
- False positive for semicolons after single-line nameless unions.
R=mark@chromium.org
Review URL: https://codereview.appspot.com/15740044
- Change formatting rules of braced initializers.
- Permit use of constexpr and allow constexpr global variables.
- Allow all C++11 features except for those that are specifically banned.
- Fix/add C99 format specifiers for ptrdiff_t and ssize_t.
- Add lambda expressions to the list of explicitly banned C++11 features.
- Relax "return type is always on the same line as the function name" rule.
- Allow unique_ptr, discourage ownership transfer. Allow noncopyable std::move.
- Allow system-specific includes after other includes.
- Add boost/math/distributions to the set of permitted Boost libraries.
Update Objective-C style guide to 2.59:
- Use instancetype as return type for example init methods.
- Remove invalid +stringWithInt: call.
- Remove reference to pre-Objective-C 2.0 declaration requirements.
- Remove reference to Objective-C exception macros.
- Remove reference to informal protocols as an alternative to optional methods.
- Class headers should include comments documenting non-trivial interfaces.
- Don't specify that blocks are preferable to methods as callbacks.
- Specify "strong" and "weak" as comments for non-Objective-C pointers.
- Replace improper reference to ownership of a retained object.
- Clarify some aspects of method ordering rules.
- Prefixes are required for shared code and optional for applications.
- Clarify that nil pointers are safe as receivers, not necessarily parameters.
- Clarify that delegate pointers should typically be zeroing weak pointers.
- Allow a 100-column limit, except for projects that choose to use 80.
Update Python style guide to 2.59:
- Add more examples of bad code to the default arguments section.
- Allow ''' when ' is used as the single quote within a file.
- Remove references to pychecker. Recommend pylint.
- Add more examples to the indentation section.
Update JavaScript style guide to 2.93:
- Add @nocompile.
- Fix a few typos.
- When wrapping lines, indent more deeply for child expressions.
- Document that @const can be used on a constructor.
- Update eval section to discourage using eval for RPC.
- Update an example to avoid encouraging using numbers as booleans.
- Allow for no indentation of @desc jsdoc tags.
- Add @public discussion.
Update shell style guide to 1.26:
- Add a section on style for case statements.
Update Common Lisp style guide to 1.23:
- fare-matcher was superseded by optima.
- Clarify wording regarding DYNAMIC-EXTENT.
- Add boost::bimap to the list of allowed Boost libraries.
- C++11: remove mention of constexpr.
- Remove noun/verb naming rules, and consolidate "General Naming Rules".
- C++11: allow variadic templates.
- Revise guidance on function definition comments.
- Clarify that one space is sufficient before trailing /* */ comments.
- C++11: allow alias templates.
- C++11: allow <array>, deprecate Boost array.
- C++11: allow unique_ptr, deprecate Boost pointer container.
- C++11: allow braced initializer lists.
Update Objective-C style guide to 2.56:
- Add details on constant declarations to clarify naming and scope issues.
- Update link to Apple's Objective-C guide.
- Allow left-aligning multi-block method invocation segments.
- Add section on container literals.
Update Python style guide to 2.54:
- Allow str.format in addition to the % operator.
- Allow #!/usr/bin/python2 and #!/usr/bin/python3.
- Move the closing brace example from column 4 to 0.
- Remove the requirement to use named parameters for arguments with defaults.
Update HTML/CSS style guide to 2.23:
- No changes.
Update JavaScript style guide to 2.82:
- Fix typos, whitespace, and character entities.
- Include property descriptions in the clause about omitting obvious comments.
- Make file overviews optional.
- Fix example in "HTML in JSDoc" section.
- Remove the semicolon-insertion language from the operators section.
- State that complete sentences are recommended but not required.
- Document usage of goog.scope to declare new classes.
Update Common Lisp style guide to 1.20:
- Indicate both variable and function predicates require a "p".
- Make the abbreviations rules consistent and in one location.
- Don't allow for the use of &AUX.
- Allow for "body" and "end" as exceptions to the suffix rule.
- Use the TODO convention to mark code that needs to be addressed.
- Remove file maintainership requirements, require a description.
- Change top-level form requirements to the length of a page.
- Remove "don't be clever".
By default, the header guard CPP variable is calculated as the relative
path to the directory that contains .git, .hg, or .svn. When this flag
is specified, the relative path is calculated from the specified
directory.
Patch by mazda@chromium.org
CR: https://codereview.appspot.com/8630045/
- Relax the rule for sizeof(varname) vs. sizeof(type).
- Allow an exception for nonconst reference parameters where
convention dictates their use, such as for swap.
- C++11: allow static_assert.
- Require non-trivial fall-through between cases in switch
statements to be annotated. Trivial fall-through includes
consecutive case labels with no intervening code, and no comment
is required in these cases.
- C++11: allow constexpr.
- Revise the "Integer Types" section to note type-width problems.
- Clarify that the "arguments on subsequent lines" function call
style is acceptable even when the 80-column limit doesn't require
it.
- Boost: allow part of Polygon.
- C++11: allow <tuple>.
Update Objective-C style guide to 2.52:
- Fix ARC example to not imply the use of @private in .m files.
- Add an example to the "Category Names" section.
- Require that ARC-using files insert preprocessor directives that
generate an error when compiling without ARC.
- Fix spacing around the *s in the ARC example per the C++ style
guide.
Update Python style guide to 2.48:
- Allow comments with URLs to exceed 80 characters per line.
- Update outdated implicit-line-joining URLs.
Update HTML/CSS style guide to 2.21:
- Consistent use of title case.
- Add new "Declaration Block Separation" section.
- Add a CSS example to the "Capitalization" section.
- Minor fixes to whitespace.
Update JavaScript style to guide to 2.72:
- Make it clear that the injunction against aliasing namespaces only
applies to local aliases, not goog.scope.
- Clarify the style guide's recommendation on array/object literals.
- Add documentation on @private {type}, @protected {type}, and
@const {type}.
- Make JSDoc descriptions required only if not obvious.
- Clarify that only private properties and methods need a trailing
underscore.
- Fix spelling of arv's name.
Update Common Lisp style guide to 1.18:
- Macro-defining macros are harder to understand for everyone, not
just for the "uninitiated." There's no need to condescend.
In all of the above style guides:
- The guide source is now encoded as UTF-8. The numeric character
references have been replaced with raw UTF-8-encoded characters.
- Better emacs-flymake integration
- Fix false positives in macros and template parameters
- Improve the wording on the make_pair warning
- Remove virtual keyword checks (now a warning in clang)
- Add checks for namespaces
- Check that DISALLOW_* macros are always in the "private:" section
- Fix false positives for gMock
- Check for alternative boolean operator tokens
- Fix false positives for space on parens
- Fix false positives about placement of "{" near preprocessor macros
- Don't lint inside inlined assembler
- Don't warn on "auto"; it is now a type shortcut, not a storage class
- Don't warn on c++11 for loops
- Warn on empty loop bodies
- Don't warn on unnamed args for the postincrement operator
- Fixes for "<" placement now allowed in c++11
Review URL: https://codereview.appspot.com/7039047
- Clarify that sentence-like non-sentence comments are permitted.
- Note that older code with incorrect #include ordering should be fixed.
- Revamp the section on default function arguments.
- Avoid explicitly recommending Init() methods.
- C++11: permit "auto".
- C++11: permit ">>" in place of "> >".
- C++11: permit range-based "for".
- C++11: permit variadic macros (already permitted as a C++03 extension).
- C++11: permit "LL" and "ULL" literal suffixes (already permitted as a C++03
extension).
- Reflect the revised copyright and author line policy: copyright notices are
not required, but license boilerplate may still be used (and generally
contains a copyright notice). Author lines are not required.
- C++11: permit new features in <algorithm> and the portion of <numeric> that
does not require initializer lists.
- Revise rules on forward declarations: explicitly forbid forward-declared
functions, do not mandate forward declarations, discourage forward-declared
templates.
- Remove the rule requiring "const" qualifiers for member functions to be
on the same line as the closing parenthesis of the parameter list.
- Fix typo: "unnamed namespaces."
- C++11: permit local types as template parameters.
- Fix typo: "unfamiliar."
- Relax RTTI rules to permit its use, but warn about its abuse.
- C++11: permit nullptr and nullptr_t. Revise text referring to NULL to refer
more generically to null pointers.
- Remove the "don't go crazy with const" rule.
- Fix typo: "dir/foo2" should bee "dir2/foo2."
- Remove reference to a specific GCC version.
Update Objective-C style guide to 2.48:
- Revise method declaration and invocation formatting rules for long names.
- Reflect the revised copyright and author line policy: copyright notices are
not required, but license boilerplate may still be used (and generally
contains a copyright notice). Author lines are not required. Top-of-file
comments are not required.
- Fix dead link in the "nil Checks" section.
- Cover ARC.
- Specify that @private is only required for instance variables in header
files.
- Permit NSNumber literals.
- Change the naming convention for instance variables from trailing underscore
to leading underscore, allowing a wide exception for existing code and
projects.
- Fix description of BOOL with respect to its signedness.
Update Python style guide to 2.45:
- Recommend "pylint: disable" over "pylint: disable-msg."
- Fix case-sensitive anchor.
- Provide a better explanation of the problems with catch-all "except:."
- Permit "map" and "filter" in absence of inlined lambdas.
Update JavaScript style guide to 2.64:
- Clarify rules for requiring and providing inner dependencies on classes.
- Clarify semicolons for functions.
- Note proper namespace and filename casing.
- Fix typos: "@extends."
- Permit parentheses to be omitted on unions.
- Don't require method descriptions when obvious.
- "in" is a keyword, put it in <code>.
- New "Aliasing with goog.scope" section.
- Rewrite the "Constants" section.
- Remove the recommendation to use join() to build strings.
- Add the "@expose" annotation.
- Fix the "@suppress" example.
- Remove reference alternate cast syntax.
- Reflect the revised copyright and author line policy: copyright notices are
not required, but license boilerplate may still be used (and generally
contains a copyright notice). Author lines are not required.
- Say that "use strict" is not required.
- Fix links to "optional" section.
- Rewrite "JavaScript Types" section.
- Fix typos: "parameterizes," "converted."
- Prefer in-constructor field initialization.
- Add a section on "delete" and null-assignment.
- Add a note about optional JSDoc comments on enum values.
- State explicitly that dot operators belong at the ends of lines.
- Add "@dict" and "@struct" annotations.
- Add links to the JavaScript Types section.
- Require (rather than encourage) compiling.
Update HTML/CSS style guide to 2.19:
- Rephrased quotation guidelines.
- Updated W3C I18N article reference.
- Fixed revision number.
Update styleguide.xsl to 1.34:
- Fix error in RefreshVisibilityFromHashParam when a URL fragment points to a
named anchor within a section, as used by the JavaScript style guide.