styleguide/cpplint
avakulenko@google.com 02af6281c6 Update cpplint.py to #359:
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
2014-06-04 18:53:25 +00:00
..
cpplint_test_header.h Add --root flag used for deriving header guard CPP variable. 2013-04-16 21:06:32 +00:00
cpplint_unittest.py Update cpplint.py to #359: 2014-06-04 18:53:25 +00:00
cpplint.py Update cpplint.py to #359: 2014-06-04 18:53:25 +00:00
README Relicense cpplint under 3 clause BSD for webkit folks. 2009-06-26 22:06:46 +00:00

This is automated checker to make sure a C++ file follows Google's C++ style
guide (http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml). As it
heavily relies on regular expressions, cpplint.py won't catch all violations of
the style guide and will very occasionally report a false positive. There is a
list of things we currently don't handle very well at the top of cpplint.py,
and we welcome patches to improve it.

The linting tool takes a list of files as input. For full usage instructions,
please see the output of:

  ./cpplint.py --help

Unit tests are provided in cpplint_unittest.py. This file can safely be ignored
by end users who have downloaded this package and only want to run the lint
tool.

---

cpplint.py and its corresponding unit tests are Copyright (C) 2009 Google Inc.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.