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.
- Update an example to omit the blank line between C and C++ #includes.
- Rewrite the paragraph about #include ordering.
- Clarify namespace closing comments.
- Discourage const references for input arguments which are aliased beyond
the scope of the function call.
- Replace all '&' with '&'.
- Clarify that interfaces must have virtual destructors.
- Add an explicit example for |else if|.
- C++11 updates.
Update Objective-C style guide to 2.36:
- Remove requirement to list @dynamic implementations.
- Remove requirement to never synthesize CFType properties, since they may
be retained on 10.6.
- Use __weak and __strong type declaration modifiers rather than comments.
- Make the copyright/license information consistent.
- An example initializer comment revealed too much about the implementation.
- Correct spelling mistakes.
- Fix names that didn't follow Cocoa conventions.
- Fix examples to conform to style.
- Add a section about no braces for empty interfaces.
- Add a section about automatically synthesized instance variables.
- Codify avoidance of accessors in -init and -dealloc methods.
- Changes for the 80-column rule.
- Weaken the language around object ownership type qualifiers.
- Document the rules for formatting blocks.
Update JavaScript style guide to 2.27:
- Introduce EcmaScript 5 Strict verbiage.
- Add a note about private constructors.
- Simplify explanations about JSDoc comments.
- Sort the JSDoc tags.
- Remove the sections about type-checking now that the JSDoc tags and JS
types are no longer one table.
- Convert <tt> to <code>, because the XSL processor eats <tt>.
- Add @suppress.
- Mark @inheritDoc deprecated in favor of @override.
- Add a section about inner classes and enums being defined in the same file
as the top-level class they are defined on.
Update Python style guide to 2.28:
- Change "Naming" summary to match body.
- Make the prohibition against backslash line continuation explicit.
- Update the TODO section to match the C++ style guide.
- Declare Python code without a shebang line to be stylish.
- Clarify rules on function docstrings.
- Fix spelling errors.
- Update with styleguide.xsl 1.33.
Update styleguide.xsl to 1.33:
- Clean up style guide JS.
- Links to anchor tags auto-expand.
- Suggest "const_cast" when encountering "(char*)".
- Warn on template arguments to make_pair().
- Require <utility> if pair<> is seen now that <map> doesn't include it.
- Warn on lack of "explicit" keyword on single argument inline constructors.
- Better check for hanging ')' when closing function calls.
- Don't warn on: 'int v[1][3] = {{1, 2, 3}};'
- Allow function calls as the first argument to printf().
Review URL: http://codereview.appspot.com/4974066
- ostream should be treated as a system header
- Expand the MockCallback whitelist entry for gMock.
- Virtual destructor check shouldn't get confused with
"class EXPORT ClassName {" constructs.
- Don't warn about the length of "$ Id: ... $" lines.
- Better semicolon checks in for() loops.
- Better whitespace comment checks.
Review URL: http://codereview.appspot.com/4964064
- Revise "Smart Pointers" section.
- Clarify that it's OK to have spaces after '#' in a preprocessor directive,
even though '#' itself must not be indented.
- Revise "TODO Comments" section.
- Fix wording.
- Explicitly recommend foo.h be the first file #included by foo_test.cc.
Update Objective-C style guide to 2.24:
- Clarify the spacing of @property declarations.
- Add "Overridden NSObject Method Placement" section.
- Explicitly permit blank lines around @interface, @implementation, and @end.
Update JavaScript style guide to 2.20:
- Provide additional guidance with respect to the compiler.
- Add {function(new:Type)} as a type syntax for constructors of Type.
- Revise "Method and Function Comments" section.
- Harmonize text and example in the "Passing Anonymous Functions" section.
- Explicitly state that @param and @return types must be enclosed in braces.
- Add documentation on the UNKNOWN type.
- Replace a CODE_SNIPPET with BAD_CODE_SNIPPET in the "Internet Explorer's
Conditional Comments" section.
- Remove a redundant "Expand for more information" in the "Naming" section
and fully spell out "information" in the "Code Formatting" section.
- Provide a positive example in the "Multiline string literals" section.
- Provide guidance for indentation within nested functions.
Update Python style guide to 2.20:
- Clarify shebang rule.
- Remove comment about naming macros like enums.
- Move a bad code snippet from a CODE_SNIPPET to a BAD_CODE_SNIPPET element.
Update Python style guide to 2.18:
- Clarify the syntax for import statements.
Update styleguide.xsl to 1.31:
- Substitute underscore for apostrophe in anchor names.
- Add leading blank line exception.
- Improve guidance for function definition comments.
- Tweak class comment example to not violate type naming guidelines.
Update Objective-C style guide to 2.21:
- Prohibit +new.
Update JavaScript style guide to 2.9:
- Add new "Function Declarations Within Blocks" section.
- Add new "Internet Explorer's Conditional Comments" section.
- Add new "Alias long type names to improve readability" section.
- Add @lends.
- Allow overloading a function judiciously.
- _unittest and _regtest are deprecated.
- Document C++0x policy.
- Allow namespace aliases in .h files when inside namespaces.
- Give examples for and against parentheses with return.
- Update set of allowed Boost headers.
- Add a caveat to the forward-declaration section, mentioning impicit
constructors.