https://github.com/vbvictor updated https://github.com/llvm/llvm-project/pull/122951
>From 841cfec5a0ab4ce5ce64e71facfb7becaf4340e8 Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Tue, 14 Jan 2025 22:05:43 +0300 Subject: [PATCH 1/7] [clang-tidy] add AllowedTypes to misc-const-correctness --- .../clang-tidy/misc/ConstCorrectnessCheck.cpp | 18 +- .../clang-tidy/misc/ConstCorrectnessCheck.h | 2 + clang-tools-extra/docs/ReleaseNotes.rst | 5 + .../checks/misc/const-correctness.rst | 10 + .../misc/const-correctness-allowed-types.cpp | 180 ++++++++++++++++++ 5 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-allowed-types.cpp diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp index 71a4cee4bdc6ef..aee4a3b789863c 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp @@ -8,6 +8,8 @@ #include "ConstCorrectnessCheck.h" #include "../utils/FixItHintUtils.h" +#include "../utils/Matchers.h" +#include "../utils/OptionsUtils.h" #include "clang/AST/ASTContext.h" #include "clang/ASTMatchers/ASTMatchFinder.h" #include "clang/ASTMatchers/ASTMatchers.h" @@ -41,7 +43,9 @@ ConstCorrectnessCheck::ConstCorrectnessCheck(StringRef Name, TransformValues(Options.get("TransformValues", true)), TransformReferences(Options.get("TransformReferences", true)), TransformPointersAsValues( - Options.get("TransformPointersAsValues", false)) { + Options.get("TransformPointersAsValues", false)), + AllowedTypes( + utils::options::parseStringList(Options.get("AllowedTypes", ""))) { if (AnalyzeValues == false && AnalyzeReferences == false) this->configurationDiag( "The check 'misc-const-correctness' will not " @@ -57,6 +61,9 @@ void ConstCorrectnessCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "TransformValues", TransformValues); Options.store(Opts, "TransformReferences", TransformReferences); Options.store(Opts, "TransformPointersAsValues", TransformPointersAsValues); + + Options.store(Opts, "AllowedTypes", + utils::options::serializeStringList(AllowedTypes)); } void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) { @@ -73,6 +80,12 @@ void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) { hasType(referenceType(pointee(hasCanonicalType(templateTypeParmType())))), hasType(referenceType(pointee(substTemplateTypeParmType())))); + const auto AllowedType = hasType(qualType(anyOf( + hasDeclaration(namedDecl(matchers::matchesAnyListedName(AllowedTypes))), + references(namedDecl(matchers::matchesAnyListedName(AllowedTypes))), + pointerType(pointee(hasDeclaration( + namedDecl(matchers::matchesAnyListedName(AllowedTypes)))))))); + const auto AutoTemplateType = varDecl( anyOf(hasType(autoType()), hasType(referenceType(pointee(autoType()))), hasType(pointerType(pointee(autoType()))))); @@ -87,7 +100,8 @@ void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) { unless(anyOf(ConstType, ConstReference, TemplateType, hasInitializer(isInstantiationDependent()), AutoTemplateType, RValueReference, FunctionPointerRef, - hasType(cxxRecordDecl(isLambda())), isImplicit()))); + hasType(cxxRecordDecl(isLambda())), isImplicit(), + AllowedType))); // Match the function scope for which the analysis of all local variables // shall be run. diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h index bba060e555d001..3b7aba7c4be384 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h @@ -45,6 +45,8 @@ class ConstCorrectnessCheck : public ClangTidyCheck { const bool TransformValues; const bool TransformReferences; const bool TransformPointersAsValues; + + const std::vector<StringRef> AllowedTypes; }; } // namespace clang::tidy::misc diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index fa3a8e577a33ad..16be70ca944e95 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -260,6 +260,11 @@ Changes in existing checks <clang-tidy/checks/cppcoreguidelines/pro-type-union-access>` check to report a location even when the member location is not valid. +- Improved :doc:`misc-const-correctness + <clang-tidy/checks/misc/const-correctness>` check by adding + the option ``AllowedTypes``, that excludes specified types + from const-correctness checking. + - Improved :doc:`misc-definitions-in-headers <clang-tidy/checks/misc/definitions-in-headers>` check by rewording the diagnostic note that suggests adding ``inline``. diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst index 8ac1ad56bc8cf7..201f6252816f04 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst @@ -196,3 +196,13 @@ Options // The following pointer may not become a 'int *const'. int *changing_pointee = &value; changing_pointee = &result; + +.. option:: AllowedTypes (default = '') + + A semicolon-separated list of names of types that + will be excluded from const-correctness checking. + Regular expressions are accepted, e.g. `[Rr]ef(erence)?$` matches every type + with suffix `Ref`, `ref`, `Reference` and `reference`. + If a name in the list contains the sequence `::` it is matched against + the qualified typename (i.e. `namespace::Type`), otherwise it is matched + against only the type name (i.e. `Type`). \ No newline at end of file diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-allowed-types.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-allowed-types.cpp new file mode 100644 index 00000000000000..a73b4a08d0a711 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/checkers/misc/const-correctness-allowed-types.cpp @@ -0,0 +1,180 @@ +// RUN: %check_clang_tidy %s misc-const-correctness %t -- \ +// RUN: -config="{CheckOptions: {\ +// RUN: misc-const-correctness.AllowedTypes: '[Pp]ointer$;[Pp]tr$;[Rr]ef(erence)?$;qualified::Type;::fully::QualifiedType;ConstTemplate', \ +// RUN: misc-const-correctness.TransformPointersAsValues: true, \ +// RUN: misc-const-correctness.TransformReferences: true, \ +// RUN: misc-const-correctness.WarnPointersAsValues: true } \ +// RUN: }" -- -fno-delayed-template-parsing + +struct SmartPointer { +}; + +struct smart_pointer { +}; + +struct SmartPtr { +}; + +struct smart_ptr { +}; + +struct SmartReference { +}; + +struct smart_reference { +}; + +struct SmartRef { +}; + +struct smart_ref { +}; + +struct OtherType { +}; + +template <typename T> struct ConstTemplate { +}; + +namespace qualified { +struct Type { +}; +} // namespace qualified + +namespace fully { +struct QualifiedType { +}; +} // namespace fully + +void negativeSmartPointer() { + SmartPointer p1 = {}; + SmartPointer* p2 = {}; + SmartPointer& p3 = p1; +} + +void negative_smart_pointer() { + smart_pointer p1 = {}; + smart_pointer* p2 = {}; + smart_pointer& p3 = p1; +} + +void negativeSmartPtr() { + SmartPtr p1 = {}; + SmartPtr* p2 = {}; + SmartPtr& p3 = p1; +} + +void negative_smart_ptr() { + smart_ptr p1 = {}; + smart_ptr* p2 = {}; + smart_ptr& p3 = p1; +} + +void negativeSmartReference() { + SmartReference p1 = {}; + SmartReference* p2 = {}; + SmartReference& p3 = p1; +} + +void negative_smart_reference() { + smart_reference p1 = {}; + smart_reference* p2 = {}; + smart_reference& p3 = p1; +} + +void negativeSmartRef() { + SmartRef p1 = {}; + SmartRef* p2 = {}; + SmartRef& p3 = p1; +} + +void negative_smart_ref() { + smart_ref p1 = {}; + smart_ref* p2 = {}; + smart_ref& p3 = p1; +} + +void positiveOtherType() { + OtherType t = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 't' of type 'OtherType' can be declared 'const' + // CHECK-FIXES: OtherType const t = {}; +} + +void negativeSomeComplex() { + ConstTemplate<int> t1 = {}; + ConstTemplate<int>* t2 = {}; + ConstTemplate<int>& t3 = t1; +} + +void negativeQualified() { + qualified::Type t1 = {}; + qualified::Type* t2 = {}; + qualified::Type& t3 = t1; + + using qualified::Type; + Type t4 = {}; + Type* t5 = {}; + Type& t6 = t4; +} + +void negativeFullyQualified() { + fully::QualifiedType t1 = {}; + fully::QualifiedType* t2 = {}; + fully::QualifiedType& t3 = t1; + + using fully::QualifiedType; + QualifiedType t4 = {}; + QualifiedType* t5 = {}; + QualifiedType& t6 = t4; +} + +using MySP = SmartPointer; +using MyTemplate = ConstTemplate<int>; +template <typename T> using MyTemplate2 = ConstTemplate<T>; + +void positiveTypedefs() { + MySP p1 = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 'p1' of type 'MySP' (aka 'SmartPointer') can be declared 'const' + // CHECK-FIXES: MySP const p1 = {}; + + MySP* p2 = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 'p2' of type 'MySP *' (aka 'SmartPointer *') can be declared 'const' + // CHECK-FIXES: MySP* const p2 = {}; + + MySP& p3 = p1; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 'p3' of type 'MySP &' (aka 'SmartPointer &') can be declared 'const' + // CHECK-FIXES: MySP const& p3 = p1; + + MyTemplate t1 = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 't1' of type 'MyTemplate' (aka 'ConstTemplate<int>') can be declared 'const' + // CHECK-FIXES: MyTemplate const t1 = {}; + + MyTemplate* t2 = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 't2' of type 'MyTemplate *' (aka 'ConstTemplate<int> *') can be declared 'const' + // CHECK-FIXES: MyTemplate* const t2 = {}; + + MyTemplate& t3 = t1; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 't3' of type 'MyTemplate &' (aka 'ConstTemplate<int> &') can be declared 'const' + // CHECK-FIXES: MyTemplate const& t3 = t1; + + MyTemplate2<int> t4 = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 't4' of type 'MyTemplate2<int>' (aka 'ConstTemplate<int>') can be declared 'const' + // CHECK-FIXES: MyTemplate2<int> const t4 = {}; + + MyTemplate2<int>* t5 = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 't5' of type 'MyTemplate2<int> *' (aka 'ConstTemplate<int> *') can be declared 'const' + // CHECK-FIXES: MyTemplate2<int>* const t5 = {}; + + MyTemplate2<int>& t6 = t4; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 't6' of type 'MyTemplate2<int> &' (aka 'ConstTemplate<int> &') can be declared 'const' + // CHECK-FIXES: MyTemplate2<int> const& t6 = t4; +} + +template <typename T> +class Vector {}; + +void positiveSmartPtrWrapped() { + Vector<SmartPtr> vec = {}; + // CHECK-MESSAGES: [[@LINE-1]]:3: warning: variable 'vec' of type 'Vector<SmartPtr>' can be declared 'const' + // CHECK-FIXES: Vector<SmartPtr> const vec = {}; +} >From 604e82278f3fb05db7ef3d07bb9362b9f5e324ab Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Wed, 15 Jan 2025 08:36:27 +0300 Subject: [PATCH 2/7] [clang-tidy] fix pr comments --- clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp | 1 - clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h | 1 - .../docs/clang-tidy/checks/misc/const-correctness.rst | 6 +++--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp index aee4a3b789863c..6e412e576e5f98 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp @@ -61,7 +61,6 @@ void ConstCorrectnessCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "TransformValues", TransformValues); Options.store(Opts, "TransformReferences", TransformReferences); Options.store(Opts, "TransformPointersAsValues", TransformPointersAsValues); - Options.store(Opts, "AllowedTypes", utils::options::serializeStringList(AllowedTypes)); } diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h index 3b7aba7c4be384..87dddc4faf7814 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.h @@ -45,7 +45,6 @@ class ConstCorrectnessCheck : public ClangTidyCheck { const bool TransformValues; const bool TransformReferences; const bool TransformPointersAsValues; - const std::vector<StringRef> AllowedTypes; }; diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst index 201f6252816f04..6ebc2da180bce4 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst @@ -203,6 +203,6 @@ Options will be excluded from const-correctness checking. Regular expressions are accepted, e.g. `[Rr]ef(erence)?$` matches every type with suffix `Ref`, `ref`, `Reference` and `reference`. - If a name in the list contains the sequence `::` it is matched against - the qualified typename (i.e. `namespace::Type`), otherwise it is matched - against only the type name (i.e. `Type`). \ No newline at end of file + If a name in the list contains the sequence `::`, it is matched against + the qualified type name (i.e. `namespace::Type`), otherwise it is matched + against only the type name (i.e. `Type`). >From ec16e135a14df6915ef4e63b7435a42a05592c49 Mon Sep 17 00:00:00 2001 From: Baranov Victor <bar.victor.2...@gmail.com> Date: Wed, 15 Jan 2025 20:20:25 +0300 Subject: [PATCH 3/7] [clang-tidy] fix pr comments --- clang-tools-extra/docs/ReleaseNotes.rst | 2 +- .../docs/clang-tidy/checks/misc/const-correctness.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 16be70ca944e95..527e8e369fed3d 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -262,7 +262,7 @@ Changes in existing checks - Improved :doc:`misc-const-correctness <clang-tidy/checks/misc/const-correctness>` check by adding - the option ``AllowedTypes``, that excludes specified types + the option `AllowedTypes`, that excludes specified types from const-correctness checking. - Improved :doc:`misc-definitions-in-headers diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst index 6ebc2da180bce4..df6b7b1cae6c5f 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst @@ -205,4 +205,4 @@ Options with suffix `Ref`, `ref`, `Reference` and `reference`. If a name in the list contains the sequence `::`, it is matched against the qualified type name (i.e. `namespace::Type`), otherwise it is matched - against only the type name (i.e. `Type`). + against only the type name (i.e. ``Type``). >From 1e90e49800f3c3c414bb39144f1e140ffa7cf080 Mon Sep 17 00:00:00 2001 From: Baranov Victor <bar.victor.2...@gmail.com> Date: Wed, 15 Jan 2025 20:23:49 +0300 Subject: [PATCH 4/7] [clang-tidy] fix pr comments --- .../docs/clang-tidy/checks/misc/const-correctness.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst index df6b7b1cae6c5f..cbaeeb96c5c276 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst @@ -204,5 +204,5 @@ Options Regular expressions are accepted, e.g. `[Rr]ef(erence)?$` matches every type with suffix `Ref`, `ref`, `Reference` and `reference`. If a name in the list contains the sequence `::`, it is matched against - the qualified type name (i.e. `namespace::Type`), otherwise it is matched + the qualified type name (i.e. ``namespace::Type``), otherwise it is matched against only the type name (i.e. ``Type``). >From 117e43394d72fbdf623cbfee28a0814ff45b926c Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Sat, 25 Jan 2025 20:10:46 +0300 Subject: [PATCH 5/7] [clang-tidy] improved docs by filling lines to 80-character limit --- clang-tools-extra/docs/ReleaseNotes.rst | 6 +++--- .../clang-tidy/checks/misc/const-correctness.rst | 13 ++++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 527e8e369fed3d..7949180870c656 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -261,9 +261,9 @@ Changes in existing checks report a location even when the member location is not valid. - Improved :doc:`misc-const-correctness - <clang-tidy/checks/misc/const-correctness>` check by adding - the option `AllowedTypes`, that excludes specified types - from const-correctness checking. + <clang-tidy/checks/misc/const-correctness>` check by adding the option + `AllowedTypes`, that excludes specified types from const-correctness + checking. - Improved :doc:`misc-definitions-in-headers <clang-tidy/checks/misc/definitions-in-headers>` check by rewording the diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst index cbaeeb96c5c276..c67c79a97f62f6 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst @@ -199,10 +199,9 @@ Options .. option:: AllowedTypes (default = '') - A semicolon-separated list of names of types that - will be excluded from const-correctness checking. - Regular expressions are accepted, e.g. `[Rr]ef(erence)?$` matches every type - with suffix `Ref`, `ref`, `Reference` and `reference`. - If a name in the list contains the sequence `::`, it is matched against - the qualified type name (i.e. ``namespace::Type``), otherwise it is matched - against only the type name (i.e. ``Type``). + A semicolon-separated list of names of types that will be excluded from + const-correctness checking. Regular expressions are accepted, e.g. + `[Rr]ef(erence)?$` matches every type with suffix `Ref`, `ref`, `Reference` + and `reference`. If a name in the list contains the sequence `::`, it is + matched against the qualified type name (i.e. ``namespace::Type``), + otherwise it is matched against only the type name (i.e. ``Type``). >From f8a071b96c7a467d56bb681303c42f16632c7b09 Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Mon, 27 Jan 2025 18:42:36 +0300 Subject: [PATCH 6/7] [clang-tidy] fix pr docs comments --- .../docs/clang-tidy/checks/misc/const-correctness.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst index c67c79a97f62f6..31f413937782d0 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst @@ -197,7 +197,7 @@ Options int *changing_pointee = &value; changing_pointee = &result; -.. option:: AllowedTypes (default = '') +.. option:: AllowedTypes A semicolon-separated list of names of types that will be excluded from const-correctness checking. Regular expressions are accepted, e.g. @@ -205,3 +205,4 @@ Options and `reference`. If a name in the list contains the sequence `::`, it is matched against the qualified type name (i.e. ``namespace::Type``), otherwise it is matched against only the type name (i.e. ``Type``). + Default is empty. >From 4d8b4f777f1b5745d6814eb5fa82d0d93ff748ef Mon Sep 17 00:00:00 2001 From: Victor Baranov <bar.victor.2...@gmail.com> Date: Mon, 27 Jan 2025 19:02:41 +0300 Subject: [PATCH 7/7] [clang-tidy] fixed styles of default parameters in docs --- .../checks/misc/const-correctness.rst | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst index 31f413937782d0..276f7776224192 100644 --- a/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst +++ b/clang-tools-extra/docs/clang-tidy/checks/misc/const-correctness.rst @@ -80,9 +80,10 @@ This limitation affects the capability to add ``const`` to methods which is not Options ------- -.. option:: AnalyzeValues (default = true) +.. option:: AnalyzeValues - Enable or disable the analysis of ordinary value variables, like ``int i = 42;`` + Enable or disable the analysis of ordinary value variables, like + ``int i = 42;``. Default is `true`. .. code-block:: c++ @@ -96,9 +97,10 @@ Options // No warning int const a[] = {42, 42, 42}; -.. option:: AnalyzeReferences (default = true) +.. option:: AnalyzeReferences - Enable or disable the analysis of reference variables, like ``int &ref = i;`` + Enable or disable the analysis of reference variables, like + ``int &ref = i;``. Default is `true`. .. code-block:: c++ @@ -108,11 +110,11 @@ Options // No warning int const& ref = i; -.. option:: WarnPointersAsValues (default = false) +.. option:: WarnPointersAsValues This option enables the suggestion for ``const`` of the pointer itself. Pointer values have two possibilities to be ``const``, the pointer - and the value pointing to. + and the value pointing to. Default is `false`. .. code-block:: c++ @@ -123,9 +125,10 @@ Options // No warning const int *const pointer_variable = &value; -.. option:: TransformValues (default = true) +.. option:: TransformValues - Provides fixit-hints for value types that automatically add ``const`` if its a single declaration. + Provides fixit-hints for value types that automatically add ``const`` if + its a single declaration. Default is `true`. .. code-block:: c++ @@ -143,10 +146,10 @@ Options int result = value * 3; result -= 10; -.. option:: TransformReferences (default = true) +.. option:: TransformReferences - Provides fixit-hints for reference types that automatically add ``const`` if its a single - declaration. + Provides fixit-hints for reference types that automatically add ``const`` if + its a single declaration. Default is `true`. .. code-block:: c++ @@ -163,10 +166,10 @@ Options int result = ref_value * 3; result -= 10; -.. option:: TransformPointersAsValues (default = false) +.. option:: TransformPointersAsValues - Provides fixit-hints for pointers if their pointee is not changed. This does not analyze if the - value-pointed-to is unchanged! + Provides fixit-hints for pointers if their pointee is not changed. This does + not analyze if the value-pointed-to is unchanged! Default is `false`. Requires 'WarnPointersAsValues' to be 'true'. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits