[clang-tools-extra] r246173 - [clang-tidy] Move clang-tidy docs to a separate directory. Create doc files for checks

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 27 11:10:08 PDT 2015


Author: alexfh
Date: Thu Aug 27 13:10:07 2015
New Revision: 246173

URL: http://llvm.org/viewvc/llvm-project?rev=246173&view=rev
Log:
[clang-tidy] Move clang-tidy docs to a separate directory. Create doc files for checks

The doc files for checks have been generated from the corresponding header files
using the docs/clang-tidy/tools/dump_check_docs.py script. Committing the script
as well, but the intention is to move all the user-facing docs from header files
to the rST files and add links to .h files appropriately.

Added:
    clang-tools-extra/trunk/docs/clang-tidy/
    clang-tools-extra/trunk/docs/clang-tidy/checks/
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-explicit-make-pair.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-namespaces.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-using-namespace.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-explicit-constructor.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-global-names-in-headers.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-braces-around-statements.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-casting.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-function-size.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-namespace-comments.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-redundant-smartptr-get.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-todo.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-int.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-member-string-references.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-memset.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-operator.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-header-guard.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-include-order.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-namespace-comment.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-twine-local.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-argument-comment.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assert-side-effect.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assign-operator-signature.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-bool-pointer-implicit-conversion.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inaccurate-erase.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inefficient-algorithm.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-parentheses.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-move-constructor-init.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-noexcept-move-constructor.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-static-assert.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-swapped-arguments.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-undelegated-constructor.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-uniqueptr-reset-release.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-alias-decls.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-parameters.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-raii.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-loop-convert.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-pass-by-value.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-nullptr.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-braces-around-statements.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-container-size-empty.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-else-after-return.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-function-size.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-identifier-naming.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-named-parameter.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-smartptr-get.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-string-cstr.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/readability-simplify-boolean-expr.rst
    clang-tools-extra/trunk/docs/clang-tidy/index.rst
      - copied, changed from r246170, clang-tools-extra/trunk/docs/clang-tidy.rst
    clang-tools-extra/trunk/docs/clang-tidy/tools/
    clang-tools-extra/trunk/docs/clang-tidy/tools/dump_check_docs.py   (with props)
Removed:
    clang-tools-extra/trunk/docs/clang-tidy.rst
Modified:
    clang-tools-extra/trunk/docs/Doxyfile
    clang-tools-extra/trunk/docs/index.rst

Modified: clang-tools-extra/trunk/docs/Doxyfile
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/Doxyfile?rev=246173&r1=246172&r2=246173&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/Doxyfile (original)
+++ clang-tools-extra/trunk/docs/Doxyfile Thu Aug 27 13:10:07 2015
@@ -648,7 +648,7 @@ WARN_LOGFILE           =
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = ../clang-modernize ../clang-apply-replacements
+INPUT                  = ../clang-modernize ../clang-apply-replacements ../clang-tidy
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is

Removed: clang-tools-extra/trunk/docs/clang-tidy.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy.rst?rev=246172&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy.rst (removed)
@@ -1,502 +0,0 @@
-==========
-Clang-Tidy
-==========
-
-:program:`clang-tidy` is a clang-based C++ linter tool. Its purpose is to
-provide an extensible framework for diagnosing and fixing typical programming
-errors, like style violations, interface misuse, or bugs that can be deduced via
-static analysis. :program:`clang-tidy` is modular and provides a convenient
-interface for writing new checks.
-
-
-Using clang-tidy
-================
-
-:program:`clang-tidy` is a `LibTooling`_-based tool, and it's easier to work
-with if you set up a compile command database for your project (for an example
-of how to do this see `How To Setup Tooling For LLVM`_). You can also specify
-compilation options on the command line after ``--``:
-
-.. code-block:: console
-
-  $ clang-tidy test.cpp -- -Imy_project/include -DMY_DEFINES ...
-
-:program:`clang-tidy` has its own checks and can also run Clang static analyzer
-checks. Each check has a name and the checks to run can be chosen using the
-``-checks=`` option, which specifies a comma-separated list of positive and
-negative (prefixed with ``-``) globs. Positive globs add subsets of checks,
-negative globs remove them. For example,
-
-.. code-block:: console
-
-  $ clang-tidy test.cpp -checks=-*,clang-analyzer-*,-clang-analyzer-alpha*
-
-will disable all default checks (``-*``) and enable all ``clang-analyzer-*``
-checks except for ``clang-analyzer-alpha*`` ones.
-
-The ``-list-checks`` option lists all the enabled checks. When used without
-``-checks=``, it shows checks enabled by default. Use ``-checks=*`` to see all
-available checks or with any other value of ``-checks=`` to see which checks are
-enabled by this value.
-
-There are currently the following groups of checks:
-
-* Checks related to the LLVM coding conventions have names starting with
-  ``llvm-``.
-
-* Checks related to the Google coding conventions have names starting with
-  ``google-``.
-
-* Checks with names starting with ``misc-`` don't relate to any particular
-  coding style.
-
-* Clang static analyzer checks are named starting with ``clang-analyzer-``.
-
-Clang diagnostics are treated in a similar way as check diagnostics. Clang
-diagnostics are displayed by clang-tidy and can be filtered out using
-``-checks=`` option. However, the ``-checks=`` option does not affect
-compilation arguments, so it can not turn on Clang warnings which are not
-already turned on in build configuration.
-
-Clang diagnostics have check names starting with ``clang-diagnostic-``.
-Diagnostics which have a corresponding warning option, are named
-``clang-diagostic-<warning-option>``, e.g. Clang warning controlled by
-``-Wliteral-conversion`` will be reported with check name
-``clang-diagnostic-literal-conversion``.
-
-The ``-fix`` flag instructs :program:`clang-tidy` to fix found errors if
-supported by corresponding checks.
-
-An overview of all the command-line options:
-
-.. code-block:: console
-
-  $ clang-tidy -help
-  USAGE: clang-tidy [options] <source0> [... <sourceN>]
-
-  OPTIONS:
-
-  General options:
-
-    -help                    - Display available options (-help-hidden
-                               for more)
-    -help-list               - Display list of available options
-                               (-help-list-hidden for more)
-    -version                 - Display the version of this program
-
-  clang-tidy options:
-
-    -analyze-temporary-dtors   - Enable temporary destructor-aware analysis in
-                                 clang-analyzer- checks.
-                                 This option overrides the value read from a
-                                 .clang-tidy file.
-    -checks=<string>           - Comma-separated list of globs with optional '-'
-                                 prefix. Globs are processed in order of appearance
-                                 in the list. Globs without '-' prefix add checks
-                                 with matching names to the set, globs with the '-'
-                                 prefix remove checks with matching names from the
-                                 set of enabled checks.
-                                 This option's value is appended to the value read
-                                 from a .clang-tidy file, if any.
-    -config=<string>           - Specifies a configuration in YAML/JSON format:
-                                   -config="{Checks: '*', CheckOptions: [{key: x, value: y}]}"
-                                 When the value is empty, clang-tidy will attempt to find
-                                 a file named .clang-tidy for each source file in its parent
-                                 directories.
-    -dump-config               - Dumps configuration in the YAML format to stdout. This option
-                                 should be used along with a file name (and '--' if the file is
-                                 outside of a project with configured compilation database). The
-                                 configuration used for this file will be printed.
-    -enable-check-profile      - Enable per-check timing profiles, and print a report to stderr.
-    -export-fixes=<filename>   - YAML file to store suggested fixes in. The
-                                 stored fixes can be applied to the input source
-                                 code with clang-apply-replacements.
-    -extra-arg=<string>        - Additional argument to append to the compiler command line
-    -extra-arg-before=<string> - Additional argument to prepend to the compiler command line
-    -fix                       - Apply suggested fixes. Without -fix-errors
-                                 clang-tidy will bail out if any compilation
-                                 errors were found.
-    -fix-errors                - Apply suggested fixes even if compilation errors
-                                 were found. If compiler errors have attached
-                                 fix-its, clang-tidy will apply them as well.
-    -header-filter=<string>    - Regular expression matching the names of the
-                                 headers to output diagnostics from. Diagnostics
-                                 from the main file of each translation unit are
-                                 always displayed.
-                                 Can be used together with -line-filter.
-                                 This option overrides the value read from a
-                                 .clang-tidy file.
-    -line-filter=<string>      - List of files with line ranges to filter the
-                                 warnings. Can be used together with
-                                 -header-filter. The format of the list is a JSON
-                                 array of objects:
-                                   [
-                                     {"name":"file1.cpp","lines":[[1,3],[5,7]]},
-                                     {"name":"file2.h"}
-                                   ]
-    -list-checks               - List all enabled checks and exit. Use with
-                                 -checks=* to list all available checks.
-    -p=<string>                - Build path
-    -system-headers            - Display the errors from system headers.
-
-  -p <build-path> is used to read a compile command database.
-
-          For example, it can be a CMake build directory in which a file named
-          compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-          CMake option to get this output). When no build path is specified,
-          a search for compile_commands.json will be attempted through all
-          parent paths of the first input file . See:
-          http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an
-          example of setting up Clang Tooling on a source tree.
-
-  <source0> ... specify the paths of source files. These paths are
-          looked up in the compile command database. If the path of a file is
-          absolute, it needs to point into CMake's source tree. If the path is
-          relative, the current working directory needs to be in the CMake
-          source tree and the file must be in a subdirectory of the current
-          working directory. "./" prefixes in the relative files will be
-          automatically removed, but the rest of a relative path must be a
-          suffix of a path in the compile command database.
-
-  Configuration files:
-    clang-tidy attempts to read configuration for each source file from a
-    .clang-tidy file located in the closest parent directory of the source
-    file. If any configuration options have a corresponding command-line
-    option, command-line option takes precedence. The effective
-    configuration can be inspected using -dump-config:
-
-      $ clang-tidy -dump-config - --
-      ---
-      Checks:          '-*,some-check'
-      HeaderFilterRegex: ''
-      AnalyzeTemporaryDtors: false
-      User:            user
-      CheckOptions:    
-        - key:             some-check.SomeOption
-          value:           'some value'
-      ...
-
-.. _LibTooling: http://clang.llvm.org/docs/LibTooling.html
-.. _How To Setup Tooling For LLVM: http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
-
-
-Getting Involved
-================
-
-:program:`clang-tidy` has several own checks and can run Clang static analyzer
-checks, but its power is in the ability to easily write custom checks.
-
-Checks are organized in modules, which can be linked into :program:`clang-tidy`
-with minimal or no code changes in clang-tidy.
-
-Checks can plug the analysis on the preprocessor level using `PPCallbacks`_ or
-on the AST level using `AST Matchers`_. When an error is found, checks can
-report them in a way similar to how Clang diagnostics work. A fix-it hint can be
-attached to a diagnostic message.
-
-The interface provided by clang-tidy makes it easy to write useful and precise
-checks in just a few lines of code. If you have an idea for a good check, the
-rest of this document explains how to do this.
-
-.. _AST Matchers: http://clang.llvm.org/docs/LibASTMatchers.html
-.. _PPCallbacks: http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html
-
-
-Choosing the Right Place for your Check
----------------------------------------
-
-If you have an idea of a check, you should decide whether it should be
-implemented as a:
-
-+ *Clang diagnostic*: if the check is generic enough, targets code patterns that
-  most probably are bugs (rather than style or readability issues), can be
-  implemented effectively and with extremely low false positive rate, it may
-  make a good Clang diagnostic.
-
-+ *Clang static analyzer check*: if the check requires some sort of control flow
-  analysis, it should probably be implemented as a static analyzer check.
-
-+ *clang-tidy check* is a good choice for linter-style checks, checks that are
-  related to a certain coding style, checks that address code readability, etc.
-
-
-Preparing your Workspace
-------------------------
-
-If you are new to LLVM development, you should read the `Getting Started with
-the LLVM System`_, `Using Clang Tools`_ and `How To Setup Tooling For LLVM`_
-documents to check out and build LLVM, Clang and Clang Extra Tools with CMake.
-
-Once you are done, change to the ``llvm/tools/clang/tools/extra`` directory, and
-let's start!
-
-.. _Getting Started with the LLVM System: http://llvm.org/docs/GettingStarted.html
-.. _Using Clang Tools: http://clang.llvm.org/docs/ClangTools.html
-
-
-The Directory Structure
------------------------
-
-:program:`clang-tidy` source code resides in the
-``llvm/tools/clang/tools/extra`` directory and is structured as follows:
-
-::
-
-  clang-tidy/                       # Clang-tidy core.
-  |-- ClangTidy.h                   # Interfaces for users and checks.
-  |-- ClangTidyModule.h             # Interface for clang-tidy modules.
-  |-- ClangTidyModuleRegistry.h     # Interface for registering of modules.
-     ...
-  |-- google/                       # Google clang-tidy module.
-  |--  |-- GoogleTidyModule.cpp
-  |--  |-- GoogleTidyModule.h
-          ...
-  |-- llvm/                         # LLVM clang-tidy module.
-  |--  |-- LLVMTidyModule.cpp
-  |--  |-- LLVMTidyModule.h
-          ...
-  |-- tool/                         # Sources of the clang-tidy binary.
-          ...
-  test/clang-tidy/                  # Integration tests.
-      ...
-  unittests/clang-tidy/             # Unit tests.
-  |-- ClangTidyTest.h
-  |-- GoogleModuleTest.cpp
-  |-- LLVMModuleTest.cpp
-      ...
-
-
-Writing a clang-tidy Check
---------------------------
-
-So you have an idea of a useful check for :program:`clang-tidy`.
-
-You need to decide which module the check belongs to. If the check verifies
-conformance of the code to a certain coding style, it probably deserves a
-separate module and a directory in ``clang-tidy/`` (there are LLVM and Google
-modules already).
-
-After choosing the module, you need to create a class for your check:
-
-.. code-block:: c++
-
-  #include "../ClangTidy.h"
-
-  namespace clang {
-  namespace tidy {
-
-  class MyCheck : public ClangTidyCheck {
-  };
-
-  } // namespace tidy
-  } // namespace clang
-
-Next, you need to decide whether it should operate on the preprocessor level or
-on the AST level. Let's imagine that we need to work with the AST in our check.
-In this case we need to override two methods:
-
-.. code-block:: c++
-
-  ...
-  class ExplicitConstructorCheck : public ClangTidyCheck {
-  public:
-    ExplicitConstructorCheck(StringRef Name, ClangTidyContext *Context)
-        : ClangTidyCheck(Name, Context) {}
-    void registerMatchers(ast_matchers::MatchFinder *Finder) override;
-    void check(ast_matchers::MatchFinder::MatchResult &Result) override;
-  };
-
-Constructor of the check receives the ``Name`` and ``Context`` parameters, and
-must forward them to the ``ClangTidyCheck`` constructor.
-
-In the ``registerMatchers`` method we create an AST Matcher (see `AST Matchers`_
-for more information) that will find the pattern in the AST that we want to
-inspect. The results of the matching are passed to the ``check`` method, which
-can further inspect them and report diagnostics.
-
-.. code-block:: c++
-
-  using namespace ast_matchers;
-
-  void ExplicitConstructorCheck::registerMatchers(MatchFinder *Finder) {
-    Finder->addMatcher(constructorDecl().bind("ctor"), this);
-  }
-
-  void ExplicitConstructorCheck::check(const MatchFinder::MatchResult &Result) {
-    const CXXConstructorDecl *Ctor =
-        Result.Nodes.getNodeAs<CXXConstructorDecl>("ctor");
-    // Do not be confused: isExplicit means 'explicit' keyword is present,
-    // isImplicit means that it's a compiler-generated constructor.
-    if (Ctor->isOutOfLine() || Ctor->isExplicit() || Ctor->isImplicit())
-      return;
-    if (Ctor->getNumParams() == 0 || Ctor->getMinRequiredArguments() > 1)
-      return;
-    SourceLocation Loc = Ctor->getLocation();
-    diag(Loc, "Single-argument constructors must be explicit")
-        << FixItHint::CreateInsertion(Loc, "explicit ");
-  }
-
-(The full code for this check resides in
-``clang-tidy/google/ExplicitConstructorCheck.{h,cpp}``).
-
-
-Registering your Check
-----------------------
-
-The check should be registered in the corresponding module with a distinct name:
-
-.. code-block:: c++
-
-  class MyModule : public ClangTidyModule {
-   public:
-    void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
-      CheckFactories.registerCheck<ExplicitConstructorCheck>(
-          "my-explicit-constructor");
-    }
-  };
-
-Now we need to register the module in the ``ClangTidyModuleRegistry`` using a
-statically initialized variable:
-
-.. code-block:: c++
-
-  static ClangTidyModuleRegistry::Add<MyModule> X("my-module",
-                                                  "Adds my lint checks.");
-
-
-When using LLVM build system, we need to use the following hack to ensure the
-module is linked into the clang-tidy binary:
-
-Add this near the ``ClangTidyModuleRegistry::Add<MyModule>`` variable:
-
-.. code-block:: c++
-
-  // This anchor is used to force the linker to link in the generated object file
-  // and thus register the MyModule.
-  volatile int MyModuleAnchorSource = 0;
-
-And this to the main translation unit of the clang-tidy binary (or the binary
-you link the ``clang-tidy`` library in) ``clang-tidy/tool/ClangTidyMain.cpp``:
-
-.. code-block:: c++
-
-  // This anchor is used to force the linker to link the MyModule.
-  extern volatile int MyModuleAnchorSource;
-  static int MyModuleAnchorDestination = MyModuleAnchorSource;
-
-
-Configuring Checks
-------------------
-
-If a check needs configuration options, it can access check-specific options
-using the ``Options.get<Type>("SomeOption", DefaultValue)`` call in the check
-constructor. In this case the check should also override the
-``ClangTidyCheck::storeOptions`` method to make the options provided by the
-check discoverable. This method lets :program:`clang-tidy` know which options
-the check implements and what the current values are (e.g. for the
-``-dump-config`` command line option).
-
-.. code-block:: c++
-
-  class MyCheck : public ClangTidyCheck {
-    const unsigned SomeOption1;
-    const std::string SomeOption2;
-  
-  public:
-    MyCheck(StringRef Name, ClangTidyContext *Context)
-      : ClangTidyCheck(Name, Context),
-        SomeOption(Options.get("SomeOption1", -1U)),
-        SomeOption(Options.get("SomeOption2", "some default")) {}
-
-    void storeOptions(ClangTidyOptions::OptionMap &Opts) override {
-      Options.store(Opts, "SomeOption1", SomeOption1);
-      Options.store(Opts, "SomeOption2", SomeOption2);
-    }
-    ...
-
-Assuming the check is registered with the name "my-check", the option can then
-be set in a ``.clang-tidy`` file in the following way:
-
-.. code-block:: yaml
-
-  CheckOptions:
-    - key: my-check.SomeOption1
-      value: 123
-    - key: my-check.SomeOption2
-      value: 'some other value'
-
-If you need to specify check options on a command line, you can use the inline
-YAML format:
-
-.. code-block:: bash
-
-  $ clang-tidy -config="{CheckOptions: [{key: a, value: b}, {key: x, value: y}]}" ...
-
-
-Testing Checks
---------------
-
-:program:`clang-tidy` checks can be tested using either unit tests or
-`lit`_ tests. Unit tests may be more convenient to test complex replacements
-with strict checks. `Lit`_ tests allow using partial text matching and regular
-expressions which makes them more suitable for writing compact tests for
-diagnostic messages.
-
-The ``check_clang_tidy.py`` script provides an easy way to test both
-diagnostic messages and fix-its. It filters out ``CHECK`` lines from the test
-file, runs :program:`clang-tidy` and verifies messages and fixes with two
-separate `FileCheck`_ invocations. To use the script, put a .cpp file with the
-appropriate ``RUN`` line in the ``test/clang-tidy`` directory.  Use
-``CHECK-MESSAGES:`` and ``CHECK-FIXES:`` lines to write checks against
-diagnostic messages and fixed code.
-
-It's advised to make the checks as specific as possible to avoid checks matching
-to incorrect parts of the input. Use ``[[@LINE+X]]``/``[[@LINE-X]]``
-substitutions and distinct function and variable names in the test code.
-
-Here's an example of a test using the ``check_clang_tidy.py`` script:
-
-.. code-block:: bash
-
-  // RUN: %python %S/check_clang_tidy.py %s google-readability-casting %t
-
-  void f(int a) {
-    int b = (int)a;
-    // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: redundant cast to the same type [google-readability-casting]
-    // CHECK-FIXES: int b = a;
-  }
-
-.. _lit: http://llvm.org/docs/CommandGuide/lit.html
-.. _FileCheck: http://llvm.org/docs/CommandGuide/FileCheck.html
-
-
-Running clang-tidy on LLVM
---------------------------
-
-To test a check it's best to try it out on a larger code base. LLVM and Clang
-are the natural targets as you already have the source around. The most
-convenient way to run :program:`clang-tidy` is with a compile command database;
-CMake can automatically generate one, for a description of how to enable it see
-`How To Setup Tooling For LLVM`_. Once ``compile_commands.json`` is in place and
-a working version of :program:`clang-tidy` is in ``PATH`` the entire code base
-can be analyzed with ``clang-tidy/tool/run-clang-tidy.py``. The script executes
-:program:`clang-tidy` with the default set of checks on every translation unit
-in the compile command database and displays the resulting warnings and errors.
-The script provides multiple configuration flags.
-
-* The default set of checks can be overridden using the ``-checks`` argument,
-  taking the identical format as :program:`clang-tidy` does. For example
-  ``-checks=-*,misc-use-override`` will run the ``misc-use-override``
-  checker only.
-
-* To restrict the files examined you can provide one or more regex arguments
-  that the file names are matched against.
-  ``run-clang-tidy.py clang-tidy/.*Check\.cpp`` will only analyze clang-tidy
-  checkers. It may also be necessary to restrict the header files warnings are
-  displayed from using the ``-header-filter`` flag. It has the same behavior
-  as the corresponding :program:`clang-tidy` flag.
-
-* To apply suggested fixes ``-fix`` can be passed as an argument. This gathers
-  all changes in a temporary directory and applies them. Passing ``-format``
-  will run clang-format over changed lines.
-

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-explicit-make-pair.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-explicit-make-pair.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-explicit-make-pair.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-explicit-make-pair.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,10 @@
+google-build-explicit-make-pair
+===============================
+
+
+Check that ``make_pair``'s template arguments are deduced.
+
+G++ 4.6 in C++11 mode fails badly if ``make_pair``'s template arguments are
+specified explicitly, and such use isn't intended in any case.
+
+Corresponding cpplint.py check name: 'build/explicit_make_pair'.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-namespaces.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-namespaces.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-namespaces.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-namespaces.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,9 @@
+google-build-namespaces
+=======================
+
+
+Finds anonymous namespaces in headers.
+
+http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Namespaces#Namespaces
+
+Corresponding cpplint.py check name: 'build/namespaces'.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-using-namespace.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-using-namespace.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-using-namespace.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-build-using-namespace.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,19 @@
+google-build-using-namespace
+============================
+
+
+Finds using namespace directives.
+
+http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Namespaces#Namespaces
+
+The check implements the following rule of the Google C++ Style Guide:
+
+  You may not use a using-directive to make all names from a namespace
+  available.
+
+  .. code:: c++
+
+    // Forbidden -- This pollutes the namespace.
+    using namespace foo;
+
+Corresponding cpplint.py check name: ``build/namespaces``.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-explicit-constructor.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-explicit-constructor.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-explicit-constructor.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-explicit-constructor.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,7 @@
+google-explicit-constructor
+===========================
+
+
+Checks that all single-argument constructors are explicit.
+
+See http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Explicit_Constructors

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-global-names-in-headers.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-global-names-in-headers.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-global-names-in-headers.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-global-names-in-headers.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,6 @@
+google-global-names-in-headers
+==============================
+
+
+Flag global namespace pollution in header files.
+Right now it only triggers on using declarations and directives.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-braces-around-statements.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-braces-around-statements.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-braces-around-statements.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-braces-around-statements.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,29 @@
+google-readability-braces-around-statements
+===========================================
+
+
+Checks that bodies of ``if`` statements and loops (``for``, ``range-for``,
+``do-while``, and ``while``) are inside braces
+
+Before:
+
+.. code:: c++
+
+  if (condition)
+    statement;
+
+After:
+
+.. code:: c++
+
+  if (condition) {
+    statement;
+  }
+
+Additionally, one can define an option ``ShortStatementLines`` defining the
+minimal number of lines that the statement should have in order to trigger
+this check.
+
+The number of lines is counted from the end of condition or initial keyword
+(``do``/``else``) until the last line of the inner statement.  Default value 0
+means that braces will be added to all statements (not having them already).

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-casting.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-casting.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-casting.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-casting.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,13 @@
+google-readability-casting
+==========================
+
+
+Finds usages of C-style casts.
+
+http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Casting#Casting
+
+Corresponding cpplint.py check name: 'readability/casting'.
+
+This check is similar to ``-Wold-style-cast``, but it suggests automated fixes
+in some cases. The reported locations should not be different from the
+ones generated by ``-Wold-style-cast``.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-function-size.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-function-size.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-function-size.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-function-size.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,15 @@
+google-readability-function-size
+================================
+
+
+Checks for large functions based on various metrics.
+
+These options are supported:
+
+  * ``LineThreshold`` - flag functions exceeding this number of lines. The
+    default is ``-1`` (ignore the number of lines).
+  * ``StatementThreshold`` - flag functions exceeding this number of
+    statements. This may differ significantly from the number of lines for
+    macro-heavy code. The default is ``800``.
+  * ``BranchThreshold`` - flag functions exceeding this number of control
+    statements. The default is ``-1`` (ignore the number of branches).

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-namespace-comments.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-namespace-comments.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-namespace-comments.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-namespace-comments.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,9 @@
+google-readability-namespace-comments
+=====================================
+
+
+Checks that long namespaces have a closing comment.
+
+http://llvm.org/docs/CodingStandards.html#namespace-indentation
+
+http://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Namespaces

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-redundant-smartptr-get.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-redundant-smartptr-get.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-redundant-smartptr-get.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-redundant-smartptr-get.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,14 @@
+google-readability-redundant-smartptr-get
+=========================================
+
+
+Find and remove redundant calls to smart pointer's ``.get()`` method.
+
+Examples:
+
+.. code:: c++
+
+  ptr.get()->Foo()  ==>  ptr->Foo()
+  *ptr.get()  ==>  *ptr
+  *ptr->get()  ==>  **ptr
+

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-todo.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-todo.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-todo.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-readability-todo.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,7 @@
+google-readability-todo
+=======================
+
+
+Finds TODO comments without a username or bug number.
+
+Corresponding cpplint.py check: 'readability/todo'

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-int.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-int.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-int.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-int.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,8 @@
+google-runtime-int
+==================
+
+
+Finds uses of ``short``, ``long`` and ``long long`` and suggest replacing them
+with ``u?intXX(_t)?``.
+
+Correspondig cpplint.py check: 'runtime/int'.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-member-string-references.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-member-string-references.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-member-string-references.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-member-string-references.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,25 @@
+google-runtime-member-string-references
+=======================================
+
+
+Finds members of type ``const string&``.
+
+const string reference members are generally considered unsafe as they can
+be created from a temporary quite easily.
+
+.. code:: c++
+
+  struct S {
+    S(const string &Str) : Str(Str) {}
+    const string &Str;
+  };
+  S instance("string");
+
+In the constructor call a string temporary is created from ``const char *``
+and destroyed immediately after the call. This leaves around a dangling
+reference.
+
+This check emit warnings for both ``std::string`` and ``::string`` const
+reference members.
+
+Corresponding cpplint.py check name: 'runtime/member_string_reference'.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-memset.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-memset.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-memset.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-memset.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,10 @@
+google-runtime-memset
+=====================
+
+
+Finds calls to memset with a literal zero in the length argument.
+
+This is most likely unintended and the length and value arguments are
+swapped.
+
+Corresponding cpplint.py check name: 'runtime/memset'.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-operator.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-operator.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-operator.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/google-runtime-operator.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,9 @@
+google-runtime-operator
+=======================
+
+
+Finds overloads of unary ``operator &``.
+
+http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Operator_Overloading#Operator_Overloading
+
+Corresponding cpplint.py check name: 'runtime/operator'.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,54 @@
+List of clang-tidy Checks
+=========================
+
+.. toctree::
+   google-build-explicit-make-pair
+   google-build-namespaces
+   google-build-using-namespace
+   google-explicit-constructor
+   google-global-names-in-headers
+   google-readability-braces-around-statements
+   google-readability-casting
+   google-readability-function-size
+   google-readability-namespace-comments
+   google-readability-redundant-smartptr-get
+   google-readability-todo
+   google-runtime-int
+   google-runtime-member-string-references
+   google-runtime-memset
+   google-runtime-operator
+   llvm-header-guard
+   llvm-include-order
+   llvm-namespace-comment
+   llvm-twine-local
+   misc-argument-comment
+   misc-assert-side-effect
+   misc-assign-operator-signature
+   misc-bool-pointer-implicit-conversion
+   misc-inaccurate-erase
+   misc-inefficient-algorithm
+   misc-macro-parentheses
+   misc-macro-repeated-side-effects
+   misc-move-constructor-init
+   misc-noexcept-move-constructor
+   misc-static-assert
+   misc-swapped-arguments
+   misc-undelegated-constructor
+   misc-uniqueptr-reset-release
+   misc-unused-alias-decls
+   misc-unused-parameters
+   misc-unused-raii
+   misc-use-override
+   modernize-loop-convert
+   modernize-pass-by-value
+   modernize-use-nullptr
+   readability-braces-around-statements
+   readability-container-size-empty
+   readability-else-after-return
+   readability-function-size
+   readability-identifier-naming
+   readability-named-parameter
+   readability-redundant-smartptr-get
+   readability-redundant-string-cstr
+   readability-shrink-to-fit
+   readability-simplify-boolean-expr
\ No newline at end of file

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-header-guard.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-header-guard.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-header-guard.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-header-guard.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,4 @@
+llvm-header-guard
+=================
+
+TODO: add docs

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-include-order.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-include-order.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-include-order.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-include-order.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,7 @@
+llvm-include-order
+==================
+
+
+Checks the correct order of ``#includes``.
+
+See http://llvm.org/docs/CodingStandards.html#include-style

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-namespace-comment.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-namespace-comment.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-namespace-comment.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-namespace-comment.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,9 @@
+llvm-namespace-comment
+======================
+
+
+Checks that long namespaces have a closing comment.
+
+http://llvm.org/docs/CodingStandards.html#namespace-indentation
+
+http://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Namespaces

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-twine-local.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-twine-local.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-twine-local.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/llvm-twine-local.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,6 @@
+llvm-twine-local
+================
+
+
+Looks for local ``Twine`` variables which are prone to use after frees and
+should be generally avoided.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-argument-comment.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-argument-comment.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-argument-comment.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-argument-comment.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,18 @@
+misc-argument-comment
+=====================
+
+
+Checks that argument comments match parameter names.
+
+The check understands argument comments in the form ``/*parameter_name=*/``
+that are placed right before the argument.
+
+.. code:: c++
+
+  void f(bool foo);
+
+  ...
+  f(/*bar=*/true);
+  // warning: argument name 'bar' in comment does not match parameter name 'foo'
+
+The check tries to detect typos and suggest automated fixes for them.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assert-side-effect.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assert-side-effect.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assert-side-effect.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assert-side-effect.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,17 @@
+misc-assert-side-effect
+=======================
+
+
+Finds ``assert()`` with side effect.
+
+The condition of ``assert()`` is evaluated only in debug builds so a
+condition with side effect can cause different behavior in debug / release
+builds.
+
+There are two options:
+
+  - ``AssertMacros``: A comma-separated list of the names of assert macros to
+    be checked.
+  - ``CheckFunctionCalls``: Whether to treat non-const member and non-member
+    functions as they produce side effects. Disabled by default because it
+    can increase the number of false positive warnings.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assign-operator-signature.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assign-operator-signature.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assign-operator-signature.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-assign-operator-signature.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,10 @@
+misc-assign-operator-signature
+==============================
+
+
+Finds declarations of assign operators with the wrong return and/or argument
+types.
+
+  * The return type must be ``Class&``.
+  * Works with move-assign and assign by value.
+  * Private and deleted operators are ignored.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-bool-pointer-implicit-conversion.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-bool-pointer-implicit-conversion.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-bool-pointer-implicit-conversion.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-bool-pointer-implicit-conversion.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,16 @@
+misc-bool-pointer-implicit-conversion
+=====================================
+
+
+Checks for conditions based on implicit conversion from a bool pointer to
+bool.
+
+Example:
+
+.. code:: c++
+
+  bool *p;
+  if (p) {
+    // Never used in a pointer-specific way.
+  }
+

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inaccurate-erase.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inaccurate-erase.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inaccurate-erase.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inaccurate-erase.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,11 @@
+misc-inaccurate-erase
+=====================
+
+
+Checks for inaccurate use of the ``erase()`` method.
+
+Algorithms like ``remove()`` do not actually remove any element from the
+container but return an iterator to the first redundant element at the end
+of the container. These redundant elements must be removed using the
+``erase()`` method. This check warns when not all of the elements will be
+removed due to using an inappropriate overload.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inefficient-algorithm.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inefficient-algorithm.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inefficient-algorithm.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-inefficient-algorithm.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,9 @@
+misc-inefficient-algorithm
+==========================
+
+
+Warns on inefficient use of STL algorithms on associative containers.
+
+Associative containers implements some of the algorithms as methods which
+should be preferred to the algorithms in the algorithm header. The methods
+can take advanatage of the order of the elements.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-parentheses.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-parentheses.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-parentheses.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-parentheses.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,17 @@
+misc-macro-parentheses
+======================
+
+
+Finds macros that can have unexpected behaviour due to missing parentheses.
+
+Macros are expanded by the preprocessor as-is. As a result, there can be
+unexpected behaviour; operators may be evaluated in unexpected order and
+unary operators may become binary operators, etc.
+
+When the replacement list has an expression, it is recommended to surround
+it with parentheses. This ensures that the macro result is evaluated
+completely before it is used.
+
+It is also recommended to surround macro arguments in the replacement list
+with parentheses. This ensures that the argument value is calculated
+properly.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-macro-repeated-side-effects.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,5 @@
+misc-macro-repeated-side-effects
+================================
+
+
+Checks for repeated argument with side effects in macros.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-move-constructor-init.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-move-constructor-init.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-move-constructor-init.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-move-constructor-init.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,7 @@
+misc-move-constructor-init
+==========================
+
+
+The check flags user-defined move constructors that have a ctor-initializer
+initializing a member or base class through a copy constructor instead of a
+move constructor.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-noexcept-move-constructor.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-noexcept-move-constructor.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-noexcept-move-constructor.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-noexcept-move-constructor.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,11 @@
+misc-noexcept-move-constructor
+==============================
+
+
+The check flags user-defined move constructors and assignment operators not
+marked with ``noexcept`` or marked with ``noexcept(expr)`` where ``expr``
+evaluates to ``false`` (but is not a ``false`` literal itself).
+
+Move constructors of all the types used with STL containers, for example,
+need to be declared ``noexcept``. Otherwise STL will choose copy constructors
+instead. The same is valid for move assignment operations.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-static-assert.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-static-assert.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-static-assert.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-static-assert.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,9 @@
+misc-static-assert
+==================
+
+
+Replaces ``assert()`` with ``static_assert()`` if the condition is evaluatable
+at compile time.
+
+The condition of ``static_assert()`` is evaluated at compile time which is
+safer and more efficient.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-swapped-arguments.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-swapped-arguments.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-swapped-arguments.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-swapped-arguments.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,5 @@
+misc-swapped-arguments
+======================
+
+
+Finds potentially swapped arguments by looking at implicit conversions.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-undelegated-constructor.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-undelegated-constructor.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-undelegated-constructor.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-undelegated-constructor.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,9 @@
+misc-undelegated-constructor
+============================
+
+
+Finds creation of temporary objects in constructors that look like a
+function call to another constructor of the same class.
+
+The user most likely meant to use a delegating constructor or base class
+initializer.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-uniqueptr-reset-release.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-uniqueptr-reset-release.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-uniqueptr-reset-release.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-uniqueptr-reset-release.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,15 @@
+misc-uniqueptr-reset-release
+============================
+
+
+Find and replace ``unique_ptr::reset(release())`` with ``std::move()``.
+
+Example:
+
+.. code:: c++
+
+  std::unique_ptr<Foo> x, y;
+  x.reset(y.release()); -> x = std::move(y);
+
+If ``y`` is already rvalue, ``std::move()`` is not added.  ``x`` and ``y`` can also
+be ``std::unique_ptr<Foo>*``.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-alias-decls.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-alias-decls.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-alias-decls.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-alias-decls.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,5 @@
+misc-unused-alias-decls
+=======================
+
+
+Finds unused namespace alias declarations.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-parameters.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-parameters.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-parameters.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-parameters.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,6 @@
+misc-unused-parameters
+======================
+
+
+Finds unused parameters and fixes them, so that ``-Wunused-parameter`` can be
+turned on.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-raii.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-raii.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-raii.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-unused-raii.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,28 @@
+misc-unused-raii
+================
+
+
+Finds temporaries that look like RAII objects.
+
+The canonical example for this is a scoped lock.
+
+.. code:: c++
+
+  {
+    scoped_lock(&global_mutex);
+    critical_section();
+  }
+
+The destructor of the scoped_lock is called before the ``critical_section`` is
+entered, leaving it unprotected.
+
+We apply a number of heuristics to reduce the false positive count of this
+check:
+
+  * Ignore code expanded from macros. Testing frameworks make heavy use of
+    this.
+  * Ignore types with no user-declared constructor. Those are very unlikely
+    to be RAII objects.
+  * Ignore objects at the end of a compound statement (doesn't change
+    behavior).
+  * Ignore objects returned from a call.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,5 @@
+misc-use-override
+=================
+
+
+Use C++11's ``override`` and remove ``virtual`` where applicable.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-loop-convert.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-loop-convert.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-loop-convert.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-loop-convert.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,4 @@
+modernize-loop-convert
+======================
+
+

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-pass-by-value.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-pass-by-value.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-pass-by-value.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-pass-by-value.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,4 @@
+modernize-pass-by-value
+=======================
+
+

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-nullptr.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-nullptr.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-nullptr.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-nullptr.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,4 @@
+modernize-use-nullptr
+=====================
+
+

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-braces-around-statements.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-braces-around-statements.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-braces-around-statements.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-braces-around-statements.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,29 @@
+readability-braces-around-statements
+====================================
+
+
+Checks that bodies of ``if`` statements and loops (``for``, ``range-for``,
+``do-while``, and ``while``) are inside braces
+
+Before:
+
+.. code:: c++
+
+  if (condition)
+    statement;
+
+After:
+
+.. code:: c++
+
+  if (condition) {
+    statement;
+  }
+
+Additionally, one can define an option ``ShortStatementLines`` defining the
+minimal number of lines that the statement should have in order to trigger
+this check.
+
+The number of lines is counted from the end of condition or initial keyword
+(``do``/``else``) until the last line of the inner statement.  Default value 0
+means that braces will be added to all statements (not having them already).

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-container-size-empty.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-container-size-empty.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-container-size-empty.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-container-size-empty.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,14 @@
+readability-container-size-empty
+================================
+
+
+Checks whether a call to the ``size()`` method can be replaced with a call to
+``empty()``.
+
+The emptiness of a container should be checked using the ``empty()`` method
+instead of the ``size()`` method. It is not guaranteed that ``size()`` is a
+constant-time function, and it is generally more efficient and also shows
+clearer intent to use ``empty()``. Furthermore some containers may implement
+the ``empty()`` method but not implement the ``size()`` method. Using ``empty()``
+whenever possible makes it easier to switch to another container in the
+future.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-else-after-return.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-else-after-return.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-else-after-return.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-else-after-return.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,7 @@
+readability-else-after-return
+=============================
+
+
+Flags the usages of ``else`` after ``return``.
+
+http://llvm.org/docs/CodingStandards.html#don-t-use-else-after-a-return

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-function-size.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-function-size.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-function-size.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-function-size.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,15 @@
+readability-function-size
+=========================
+
+
+Checks for large functions based on various metrics.
+
+These options are supported:
+
+  * ``LineThreshold`` - flag functions exceeding this number of lines. The
+    default is ``-1`` (ignore the number of lines).
+  * ``StatementThreshold`` - flag functions exceeding this number of
+    statements. This may differ significantly from the number of lines for
+    macro-heavy code. The default is ``800``.
+  * ``BranchThreshold`` - flag functions exceeding this number of control
+    statements. The default is ``-1`` (ignore the number of branches).

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-identifier-naming.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-identifier-naming.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-identifier-naming.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-identifier-naming.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,17 @@
+readability-identifier-naming
+=============================
+
+
+Checks for identifiers naming style mismatch.
+
+This check will try to enforce coding guidelines on the identifiers naming.
+It supports ``lower_case``, ``UPPER_CASE``, ``camelBack`` and ``CamelCase`` casing
+and tries to convert from one to another if a mismatch is detected.
+
+It also supports a fixed prefix and suffix that will be prepended or
+appended to the identifiers, regardless of the casing.
+
+Many configuration options are available, in order to be able to create
+different rules for different kind of identifier. In general, the
+rules are falling back to a more generic rule if the specific case is not
+configured.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-named-parameter.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-named-parameter.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-named-parameter.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-named-parameter.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,15 @@
+readability-named-parameter
+===========================
+
+
+Find functions with unnamed arguments.
+
+The check implements the following rule originating in the Google C++ Style
+Guide:
+
+http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Function_Declarations_and_Definitions#Function_Declarations_and_Definitions
+
+All parameters should be named, with identical names in the declaration and
+implementation.
+
+Corresponding cpplint.py check name: 'readability/function'.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-smartptr-get.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-smartptr-get.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-smartptr-get.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-smartptr-get.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,14 @@
+readability-redundant-smartptr-get
+==================================
+
+
+Find and remove redundant calls to smart pointer's ``.get()`` method.
+
+Examples:
+
+.. code:: c++
+
+  ptr.get()->Foo()  ==>  ptr->Foo()
+  *ptr.get()  ==>  *ptr
+  *ptr->get()  ==>  **ptr
+

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-string-cstr.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-string-cstr.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-string-cstr.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-redundant-string-cstr.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,5 @@
+readability-redundant-string-cstr
+=================================
+
+
+Finds unnecessary calls to ``std::string::c_str()``.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,10 @@
+readability-shrink-to-fit
+=========================
+
+
+Replace copy and swap tricks on shrinkable containers with the
+``shrink_to_fit()`` method call.
+
+The ``shrink_to_fit()`` method is more readable and more effective than
+the copy and swap trick to reduce the capacity of a shrinkable container.
+Note that, the ``shrink_to_fit()`` method is only available in C++11 and up.

Added: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-simplify-boolean-expr.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-simplify-boolean-expr.rst?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-simplify-boolean-expr.rst (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-simplify-boolean-expr.rst Thu Aug 27 13:10:07 2015
@@ -0,0 +1,76 @@
+readability-simplify-boolean-expr
+=================================
+
+
+Looks for boolean expressions involving boolean constants and simplifies
+them to use the appropriate boolean expression directly.
+
+Examples:
+
+===========================================  ================
+Initial expression                           Result
+-------------------------------------------  ----------------
+``if (b == true)``                             ``if (b)``
+``if (b == false)``                            ``if (!b)``
+``if (b && true)``                             ``if (b)``
+``if (b && false)``                            ``if (false)``
+``if (b || true)``                             ``if (true)``
+``if (b || false)``                            ``if (b)``
+``e ? true : false``                           ``e``
+``e ? false : true``                           ``!e``
+``if (true) t(); else f();``                   ``t();``
+``if (false) t(); else f();``                  ``f();``
+``if (e) return true; else return false;``     ``return e;``
+``if (e) return false; else return true;``     ``return !e;``
+``if (e) b = true; else b = false;``           ``b = e;``
+``if (e) b = false; else b = true;``           ``b = !e;``
+``if (e) return true; return false;``          ``return e;``
+``if (e) return false; return true;``          ``return !e;``
+===========================================  ================
+
+The resulting expression ``e`` is modified as follows:
+  1. Unnecessary parentheses around the expression are removed.
+  2. Negated applications of ``!`` are eliminated.
+  3. Negated applications of comparison operators are changed to use the
+     opposite condition.
+  4. Implicit conversions of pointer to ``bool`` are replaced with explicit
+     comparisons to ``nullptr``.
+  5. Implicit casts to ``bool`` are replaced with explicit casts to ``bool``.
+  6. Object expressions with ``explicit operator bool`` conversion operators
+     are replaced with explicit casts to ``bool``.
+
+Examples:
+  1. The ternary assignment ``bool b = (i < 0) ? true : false;`` has redundant
+     parentheses and becomes ``bool b = i < 0;``.
+
+  2. The conditional return ``if (!b) return false; return true;`` has an
+     implied double negation and becomes ``return b;``.
+
+  3. The conditional return ``if (i < 0) return false; return true;`` becomes
+     ``return i >= 0;``.
+
+     The conditional return ``if (i != 0) return false; return true;`` becomes
+     ``return i == 0;``.
+
+  4. The conditional return ``if (p) return true; return false;`` has an
+     implicit conversion of a pointer to ``bool`` and becomes
+     ``return p != nullptr;``.
+
+     The ternary assignment ``bool b = (i & 1) ? true : false;`` has an
+     implicit conversion of ``i & 1`` to ``bool`` and becomes
+     ``bool b = static_cast<bool>(i & 1);``.
+
+  5. The conditional return ``if (i & 1) return true; else return false;`` has
+     an implicit conversion of an integer quantity ``i & 1`` to ``bool`` and
+     becomes ``return static_cast<bool>(i & 1);``
+
+  6. Given ``struct X { explicit operator bool(); };``, and an instance ``x`` of
+     ``struct X``, the conditional return ``if (x) return true; return false;``
+     becomes ``return static_cast<bool>(x);``
+
+When a conditional boolean return or assignment appears at the end of a
+chain of ``if``, ``else if`` statements, the conditional statement is left
+unchanged unless the option ``ChainedConditionalReturn`` or
+``ChainedConditionalAssignment``, respectively, is specified as non-zero.
+The default value for both options is zero.
+

Copied: clang-tools-extra/trunk/docs/clang-tidy/index.rst (from r246170, clang-tools-extra/trunk/docs/clang-tidy.rst)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/index.rst?p2=clang-tools-extra/trunk/docs/clang-tidy/index.rst&p1=clang-tools-extra/trunk/docs/clang-tidy.rst&r1=246170&r2=246173&rev=246173&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/index.rst Thu Aug 27 13:10:07 2015
@@ -2,6 +2,12 @@
 Clang-Tidy
 ==========
 
+.. toctree::
+   :maxdepth: 1
+
+   checks/list
+
+
 :program:`clang-tidy` is a clang-based C++ linter tool. Its purpose is to
 provide an extensible framework for diagnosing and fixing typical programming
 errors, like style violations, interface misuse, or bugs that can be deduced via
@@ -248,12 +254,14 @@ The Directory Structure
   |-- ClangTidyModuleRegistry.h     # Interface for registering of modules.
      ...
   |-- google/                       # Google clang-tidy module.
-  |--  |-- GoogleTidyModule.cpp
-  |--  |-- GoogleTidyModule.h
+  |-+
+    |-- GoogleTidyModule.cpp
+    |-- GoogleTidyModule.h
           ...
   |-- llvm/                         # LLVM clang-tidy module.
-  |--  |-- LLVMTidyModule.cpp
-  |--  |-- LLVMTidyModule.h
+  |-+
+    |-- LLVMTidyModule.cpp
+    |-- LLVMTidyModule.h
           ...
   |-- tool/                         # Sources of the clang-tidy binary.
           ...

Added: clang-tools-extra/trunk/docs/clang-tidy/tools/dump_check_docs.py
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/tools/dump_check_docs.py?rev=246173&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/tools/dump_check_docs.py (added)
+++ clang-tools-extra/trunk/docs/clang-tidy/tools/dump_check_docs.py Thu Aug 27 13:10:07 2015
@@ -0,0 +1,79 @@
+#!/usr/bin/python
+
+r"""
+Create stubs for check documentation files.
+"""
+
+import os
+import re
+import sys
+
+def main():
+  clang_tidy_dir = os.path.normpath(
+      os.path.join(os.path.dirname(sys.argv[0]), '..', '..', '..',
+                   'clang-tidy'))
+
+  checks_doc_dir = os.path.normpath(
+      os.path.join(clang_tidy_dir, '..', 'docs', 'clang-tidy', 'checks'))
+
+  registered_checks = {}
+  defined_checks = {}
+
+  for dir_name, subdir_list, file_list in os.walk(clang_tidy_dir):
+    print('Processing directory ' + dir_name + '...')
+    for file_name in file_list:
+      full_name = os.path.join(dir_name, file_name)
+      if file_name.endswith('Module.cpp'):
+        print('Module ' + file_name)
+        with open(full_name, 'r') as f:
+          text = f.read()
+        for class_name, check_name in re.findall(
+            r'\.\s*registerCheck\s*<\s*([A-Za-z0-9:]+)\s*>\(\s*"([a-z0-9-]+)"',
+            text):
+          registered_checks[check_name] = class_name
+      elif file_name.endswith('.h'):
+        print('    ' + file_name + '...')
+        with open(full_name, 'r') as f:
+          text = f.read()
+        for comment, _, _, class_name in re.findall(
+            r'((([\r\n]//)[^\r\n]*)*)\s+class (\w+)\s*:' +
+            '\s*public\s+ClangTidyCheck\s*\{', text):
+          defined_checks[class_name] = comment
+
+  print('Registered checks [%s]: [%s]' %
+        (len(registered_checks), registered_checks))
+  print('Check implementations: %s' % len(defined_checks))
+
+  checks = registered_checks.keys()
+  checks.sort()
+
+  for check_name in checks:
+    doc_file_name = os.path.join(checks_doc_dir, check_name + '.rst')
+    #if os.path.exists(doc_file_name):
+    #  print('Skipping existing file %s...')
+    #  continue
+    print('Updating %s...' % doc_file_name)
+    with open(doc_file_name, 'w') as f:
+      class_name = re.sub(r'.*:', '', registered_checks[check_name])
+      f.write(check_name + '\n' + ('=' * len(check_name)) + '\n\n')
+      if class_name in defined_checks:
+        text = defined_checks[class_name]
+        text = re.sub(r'\n//+ ?(\\brief )?', r'\n', text)
+        text = re.sub(r'(\n *)\\code\n', r'\1.. code:: c++\n\n', text)
+        text = re.sub(r'(\n *)\\endcode(\n|$)', r'\n', text)
+        text = re.sub(r'`', r'``', text)
+        f.write(text + '\n')
+      else:
+        f.write('TODO: add docs\n')
+
+  with open(os.path.join(checks_doc_dir, 'list.rst'), 'w') as f:
+    f.write(
+r"""List of clang-tidy Checks
+=========================
+
+.. toctree::
+   """ + '\n   '.join(checks))
+
+
+if __name__ == '__main__':
+  main()

Propchange: clang-tools-extra/trunk/docs/clang-tidy/tools/dump_check_docs.py
------------------------------------------------------------------------------
    svn:executable = *

Modified: clang-tools-extra/trunk/docs/index.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/index.rst?rev=246173&r1=246172&r2=246173&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/index.rst (original)
+++ clang-tools-extra/trunk/docs/index.rst Thu Aug 27 13:10:07 2015
@@ -16,7 +16,7 @@ Contents
    :maxdepth: 1
 
    clang-modernize
-   clang-tidy
+   clang-tidy/index
    modularize
    pp-trace
 




More information about the cfe-commits mailing list