https://github.com/akshaykumars614 updated https://github.com/llvm/llvm-project/pull/100177
>From a9850211dae37e5b3d0cbbaf7eb25435ad8810f9 Mon Sep 17 00:00:00 2001 From: akshaykumars614 <akshaykumars...@gmail.com> Date: Tue, 23 Jul 2024 14:32:24 -0400 Subject: [PATCH 1/4] clang-tidy: readability-redundant-smartptr-get does not remove (#97964) modified ReleaseNotes --- .../readability/RedundantSmartptrGetCheck.cpp | 4 ++ clang-tools-extra/docs/ReleaseNotes.rst | 5 ++ .../readability/redundant-smartptr-get.cpp | 72 +++++++++++++++++++ 3 files changed, 81 insertions(+) diff --git a/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.cpp index 8837ac16e8828..be52af77ae0a5 100644 --- a/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/RedundantSmartptrGetCheck.cpp @@ -164,6 +164,10 @@ void RedundantSmartptrGetCheck::check(const MatchFinder::MatchResult &Result) { StringRef SmartptrText = Lexer::getSourceText( CharSourceRange::getTokenRange(Smartptr->getSourceRange()), *Result.SourceManager, getLangOpts()); + // Check if the last two characters are "->" and remove them + if (SmartptrText.ends_with("->")) { + SmartptrText = SmartptrText.drop_back(2); + } // Replace foo->get() with *foo, and foo.get() with foo. std::string Replacement = Twine(IsPtrToPtr ? "*" : "", SmartptrText).str(); diag(GetCall->getBeginLoc(), "redundant get() call on smart pointer") diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 642ad39cc0c1c..f566140dba318 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -104,6 +104,11 @@ New check aliases Changes in existing checks ^^^^^^^^^^^^^^^^^^^^^^^^^^ +- Improved :doc:`readability-simplify-boolean-expr + <clang-tidy/checks/readability/simplify-boolean-expr>` check to avoid to emit + warning for macro when IgnoreMacro option is enabled and improve messages + when auto-fix does not work. + Removed checks ^^^^^^^^^^^^^^ diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp index 01f12b6bfe6ea..e9ecc06d53959 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp @@ -20,6 +20,47 @@ struct shared_ptr { explicit operator bool() const noexcept; }; +template <typename T> +struct vector { + vector(); + bool operator==(const vector<T>& other) const; + bool operator!=(const vector<T>& other) const; + unsigned long size() const; + bool empty() const; + + // Basic iterator implementation for testing + struct iterator { + T* ptr; + iterator(T* p) : ptr(p) {} + T& operator*() { return *ptr; } + T* operator->() { return ptr; } + iterator& operator++() { + ++ptr; + return *this; + } + bool operator!=(const iterator& other) const { return ptr != other.ptr; } + }; + + iterator begin(); + iterator end(); + + T* data; + unsigned long sz; +}; + +template <typename T> +vector<T>::vector() : data(nullptr), sz(0) {} + +template <typename T> +typename vector<T>::iterator vector<T>::begin() { + return iterator(data); +} + +template <typename T> +typename vector<T>::iterator vector<T>::end() { + return iterator(data + sz); +} + } // namespace std struct Bar { @@ -235,3 +276,34 @@ void Negative() { if (MACRO(x) == nullptr) ; } + +void test_redundant_get() { + std::vector<std::shared_ptr<int>> v; + auto f = [](int) {}; + for (auto i = v.begin(); i != v.end(); ++i) { + f(*i->get()); + // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: redundant get() call + // CHECK-FIXES: f(**i); + } +} + +struct Inner { + int a; + int *getValue() { return &a; } +}; + +struct Example { + Inner inner; + Inner* get() { return &inner; } + int *getValue() { return inner.getValue(); } +}; + +void test_redundant_get_with_member() { + std::vector<std::shared_ptr<Example>> v; + auto f = [](int) {}; + for (auto i = v.begin(); i != v.end(); ++i) { + f(*(*i).get()->get()->getValue()); + // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: redundant get() call + // CHECK-FIXES: f(**i->get()->getValue()); + } +} >From e012904c90a78fbe2081f295989d565fbb4ee04c Mon Sep 17 00:00:00 2001 From: akshaykumars614 <akshaykumars...@gmail.com> Date: Sat, 27 Jul 2024 00:00:37 -0400 Subject: [PATCH 2/4] clang-tidy: readability-redundant-smartptr-get does not remove (#97964) updated Release Notes --- clang-tools-extra/docs/ReleaseNotes.rst | 278 ++++++++++++++++++++++++ 1 file changed, 278 insertions(+) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index f566140dba318..a27a6fad893d8 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -104,6 +104,284 @@ New check aliases Changes in existing checks ^^^^^^^^^^^^^^^^^^^^^^^^^^ +<<<<<<< HEAD +======= +- Improved :doc:`bugprone-assert-side-effect + <clang-tidy/checks/bugprone/assert-side-effect>` check by detecting side + effect from calling a method with non-const reference parameters. + +- Improved :doc:`bugprone-assignment-in-if-condition + <clang-tidy/checks/bugprone/assignment-in-if-condition>` check by ignoring + assignments in the C++20 ``requires`` clause. + +- Improved :doc:`bugprone-casting-through-void + <clang-tidy/checks/bugprone/casting-through-void>` check by ignoring casts + where source is already a ``void``` pointer, making middle ``void`` pointer + casts bug-free. + +- Improved :doc:`bugprone-forwarding-reference-overload + <clang-tidy/checks/bugprone/forwarding-reference-overload>` + check to ignore deleted constructors which won't hide other overloads. + +- Improved :doc:`bugprone-implicit-widening-of-multiplication-result + <clang-tidy/checks/bugprone/implicit-widening-of-multiplication-result>` check + by adding an option to ignore constant expressions of signed integer types + that fit in the source expression type. + +- Improved :doc:`bugprone-inc-dec-in-conditions + <clang-tidy/checks/bugprone/inc-dec-in-conditions>` check to ignore code + within unevaluated contexts, such as ``decltype``. + +- Improved :doc:`bugprone-lambda-function-name<clang-tidy/checks/bugprone/lambda-function-name>` + check by ignoring ``__func__`` macro in lambda captures, initializers of + default parameters and nested function declarations. + +- Improved :doc:`bugprone-multi-level-implicit-pointer-conversion + <clang-tidy/checks/bugprone/multi-level-implicit-pointer-conversion>` check + by ignoring implicit pointer conversions that are part of a cast expression. + +- Improved :doc:`bugprone-non-zero-enum-to-bool-conversion + <clang-tidy/checks/bugprone/non-zero-enum-to-bool-conversion>` check by + eliminating false positives resulting from direct usage of bitwise operators + within parentheses. + +- Improved :doc:`bugprone-optional-value-conversion + <clang-tidy/checks/bugprone/optional-value-conversion>` check by eliminating + false positives resulting from use of optionals in unevaluated context. + +- Improved :doc:`bugprone-sizeof-expression + <clang-tidy/checks/bugprone/sizeof-expression>` check by clarifying the + diagnostics, eliminating some false positives and adding a new + (off-by-default) option `WarnOnSizeOfPointer` that reports all + ``sizeof(pointer)`` expressions (except for a few that are idiomatic). + +- Improved :doc:`bugprone-suspicious-include + <clang-tidy/checks/bugprone/suspicious-include>` check by replacing the local + options `HeaderFileExtensions` and `ImplementationFileExtensions` by the + global options of the same name. + +- Improved :doc:`bugprone-too-small-loop-variable + <clang-tidy/checks/bugprone/too-small-loop-variable>` check by incorporating + better support for ``const`` loop boundaries. + +- Improved :doc:`bugprone-unused-local-non-trivial-variable + <clang-tidy/checks/bugprone/unused-local-non-trivial-variable>` check by + ignoring local variable with ``[maybe_unused]`` attribute. + +- Improved :doc:`bugprone-unused-return-value + <clang-tidy/checks/bugprone/unused-return-value>` check by updating the + parameter `CheckedFunctions` to support regexp, avoiding false positive for + function with the same prefix as the default argument, e.g. ``std::unique_ptr`` + and ``std::unique``, avoiding false positive for assignment operator overloading. + +- Improved :doc:`bugprone-use-after-move + <clang-tidy/checks/bugprone/use-after-move>` check to also handle + calls to ``std::forward``. Fixed sequencing of designated initializers. Fixed + sequencing of callees: In C++17 and later, the callee of a function is guaranteed + to be sequenced before the arguments, so don't warn if the use happens in the + callee and the move happens in one of the arguments. + +- Improved :doc:`cppcoreguidelines-avoid-non-const-global-variables + <clang-tidy/checks/cppcoreguidelines/avoid-non-const-global-variables>` check + with a new option `AllowInternalLinkage` to disable the warning for variables + with internal linkage. + +- Improved :doc:`cppcoreguidelines-macro-usage + <clang-tidy/checks/cppcoreguidelines/macro-usage>` check by ignoring macro with + hash preprocessing token. + +- Improved :doc:`cppcoreguidelines-missing-std-forward + <clang-tidy/checks/cppcoreguidelines/missing-std-forward>` check by no longer + giving false positives for deleted functions, by fixing false negatives when only + a few parameters are forwarded and by ignoring parameters without a name (unused + arguments). + +- Improved :doc:`cppcoreguidelines-owning-memory + <clang-tidy/checks/cppcoreguidelines/owning-memory>` check to properly handle + return type in lambdas and in nested functions. + +- Improved :doc:`cppcoreguidelines-prefer-member-initializer + <clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>` check + by removing enforcement of rule `C.48 + <https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers>`_, + which was deprecated since :program:`clang-tidy` 17. This rule is now covered + by :doc:`cppcoreguidelines-use-default-member-init + <clang-tidy/checks/cppcoreguidelines/use-default-member-init>`. Fixed + incorrect hints when using list-initialization. + +- Improved :doc:`cppcoreguidelines-special-member-functions + <clang-tidy/checks/cppcoreguidelines/special-member-functions>` check with a + new option `AllowImplicitlyDeletedCopyOrMove`, which removes the requirement + for explicit copy or move special member functions when they are already + implicitly deleted. + +- Improved :doc:`google-build-namespaces + <clang-tidy/checks/google/build-namespaces>` check by replacing the local + option `HeaderFileExtensions` by the global option of the same name. + +- Improved :doc:`google-explicit-constructor + <clang-tidy/checks/google/explicit-constructor>` check to better handle + C++20 `explicit(bool)`. + +- Improved :doc:`google-global-names-in-headers + <clang-tidy/checks/google/global-names-in-headers>` check by replacing the local + option `HeaderFileExtensions` by the global option of the same name. + +- Improved :doc:`google-runtime-int <clang-tidy/checks/google/runtime-int>` + check performance through optimizations. + +- Improved :doc:`hicpp-signed-bitwise <clang-tidy/checks/hicpp/signed-bitwise>` + check by ignoring false positives involving positive integer literals behind + implicit casts when `IgnorePositiveIntegerLiterals` is enabled. + +- Improved :doc:`hicpp-ignored-remove-result <clang-tidy/checks/hicpp/ignored-remove-result>` + check by ignoring other functions with same prefixes as the target specific + functions. + +- Improved :doc:`linuxkernel-must-check-errs + <clang-tidy/checks/linuxkernel/must-check-errs>` check documentation to + consistently use the check's proper name. + +- Improved :doc:`llvm-header-guard + <clang-tidy/checks/llvm/header-guard>` check by replacing the local + option `HeaderFileExtensions` by the global option of the same name. + +- Improved :doc:`misc-const-correctness + <clang-tidy/checks/misc/const-correctness>` check by avoiding infinite recursion + for recursive functions with forwarding reference parameters and reference + variables which refer to themselves. + +- Improved :doc:`misc-definitions-in-headers + <clang-tidy/checks/misc/definitions-in-headers>` check by replacing the local + option `HeaderFileExtensions` by the global option of the same name. + Additionally, the option `UseHeaderFileExtensions` is removed, so that the + check uses the `HeaderFileExtensions` option unconditionally. + +- Improved :doc:`misc-header-include-cycle + <clang-tidy/checks/misc/header-include-cycle>` check by avoiding crash for self + include cycles. + +- Improved :doc:`misc-unused-using-decls + <clang-tidy/checks/misc/unused-using-decls>` check by replacing the local + option `HeaderFileExtensions` by the global option of the same name. + +- Improved :doc:`misc-use-anonymous-namespace + <clang-tidy/checks/misc/use-anonymous-namespace>` check by replacing the local + option `HeaderFileExtensions` by the global option of the same name. + +- Improved :doc:`modernize-avoid-c-arrays + <clang-tidy/checks/modernize/avoid-c-arrays>` check by introducing the new + `AllowStringArrays` option, enabling the exclusion of array types with deduced + length initialized from string literals. + +- Improved :doc:`modernize-loop-convert + <clang-tidy/checks/modernize/loop-convert>` check by ensuring that fix-its + don't remove parentheses used in ``sizeof`` calls when they have array index + accesses as arguments. + +- Improved :doc:`modernize-use-constraints + <clang-tidy/checks/modernize/use-constraints>` check by fixing a crash that + occurred in some scenarios and excluding system headers from analysis. + +- Improved :doc:`modernize-use-nullptr + <clang-tidy/checks/modernize/use-nullptr>` check to include support for C23, + which also has introduced the ``nullptr`` keyword. + +- Improved :doc:`modernize-use-override + <clang-tidy/checks/modernize/use-override>` check to also remove any trailing + whitespace when deleting the ``virtual`` keyword. + +- Improved :doc:`modernize-use-starts-ends-with + <clang-tidy/checks/modernize/use-starts-ends-with>` check to also handle + calls to ``compare`` method. + +- Improved :doc:`modernize-use-std-print + <clang-tidy/checks/modernize/use-std-print>` check to not crash if the + format string parameter of the function to be replaced is not of the + expected type. + +- Improved :doc:`modernize-use-using <clang-tidy/checks/modernize/use-using>` + check by adding support for detection of typedefs declared on function level. + +- Improved :doc:`performance-inefficient-vector-operation + <clang-tidy/checks/performance/inefficient-vector-operation>` fixing false + negatives caused by different variable definition type and variable initial + value type in loop initialization expression. + +- Improved :doc:`performance-move-const-arg + <clang-tidy/checks/performance/move-const-arg>` check by ignoring + ``std::move()`` calls when their target is used as an rvalue. + +- Improved :doc:`performance-unnecessary-copy-initialization + <clang-tidy/checks/performance/unnecessary-copy-initialization>` check by + detecting more cases of constant access. In particular, pointers can be + analyzed, so the check now handles the common patterns + `const auto e = (*vector_ptr)[i]` and `const auto e = vector_ptr->at(i);`. + Calls to mutable function where there exists a `const` overload are also + handled. Fix crash in the case of a non-member operator call. + +- Improved :doc:`performance-unnecessary-value-param + <clang-tidy/checks/performance/unnecessary-value-param>` check + detecting more cases for template functions including lambdas with ``auto``. + E.g., ``std::sort(a.begin(), a.end(), [](auto x, auto y) { return a > b; });`` + will be detected for expensive to copy types. Fixed false positives for + dependent call expressions. + +- Improved :doc:`readability-avoid-return-with-void-value + <clang-tidy/checks/readability/avoid-return-with-void-value>` check by adding + fix-its. + +- Improved :doc:`readability-const-return-type + <clang-tidy/checks/readability/const-return-type>` check to eliminate false + positives when returning types with const not at the top level. + +- Improved :doc:`readability-container-size-empty + <clang-tidy/checks/readability/container-size-empty>` check to prevent false + positives when utilizing ``size`` or ``length`` methods that accept parameter. + Fixed crash when facing template user defined literals. + +- Improved :doc:`readability-duplicate-include + <clang-tidy/checks/readability/duplicate-include>` check by excluding include + directives that form the filename using macro. + +- Improved :doc:`readability-else-after-return + <clang-tidy/checks/readability/else-after-return>` check to ignore + `if consteval` statements, for which the `else` branch must not be removed. + +- Improved :doc:`readability-identifier-naming + <clang-tidy/checks/readability/identifier-naming>` check in `GetConfigPerFile` + mode by resolving symbolic links to header files. Fixed handling of Hungarian + Prefix when configured to `LowerCase`. Added support for renaming designated + initializers. Added support for renaming macro arguments. Fixed renaming + conflicts arising from out-of-line member function template definitions. + +- Improved :doc:`readability-implicit-bool-conversion + <clang-tidy/checks/readability/implicit-bool-conversion>` check to provide + valid fix suggestions for ``static_cast`` without a preceding space and + fixed problem with duplicate parentheses in double implicit casts. Corrected + the fix suggestions for C23 and later by using C-style casts instead of + ``static_cast``. Fixed false positives in C++20 spaceship operator by ignoring + casts in implicit and defaulted functions. + +- Improved :doc:`readability-redundant-inline-specifier + <clang-tidy/checks/readability/redundant-inline-specifier>` check to properly + emit warnings for static data member with an in-class initializer. + +- Improved :doc:`readability-redundant-member-init + <clang-tidy/checks/readability/redundant-member-init>` check to avoid + false-positives when type of the member does not match the type of the + initializer. + +- Improved :doc:`readability-redundant-smartptr-get + <clang-tidy/checks/readability/redundant-smartptr-get>` check to + remove '->', when reduntant get() is removed. + +- Improved :doc:`readability-static-accessed-through-instance + <clang-tidy/checks/readability/static-accessed-through-instance>` check to + support calls to overloaded operators as base expression and provide fixes to + expressions with side-effects. + +>>>>>>> 0421519378d8 (clang-tidy: readability-redundant-smartptr-get does not remove (#97964)) - Improved :doc:`readability-simplify-boolean-expr <clang-tidy/checks/readability/simplify-boolean-expr>` check to avoid to emit warning for macro when IgnoreMacro option is enabled and improve messages >From ebd8dfe2ea02ac4e635eb16a96852a3c3515dd96 Mon Sep 17 00:00:00 2001 From: akshaykumars614 <akshaykumars...@gmail.com> Date: Tue, 23 Jul 2024 17:30:02 -0400 Subject: [PATCH 3/4] clang-tidy: readability-redundant-smartptr-get does not remove (#97964) simplified testcase --- .../readability/redundant-smartptr-get.cpp | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp index e9ecc06d53959..ec4ca4cb79484 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-smartptr-get.cpp @@ -28,18 +28,7 @@ struct vector { unsigned long size() const; bool empty() const; - // Basic iterator implementation for testing - struct iterator { - T* ptr; - iterator(T* p) : ptr(p) {} - T& operator*() { return *ptr; } - T* operator->() { return ptr; } - iterator& operator++() { - ++ptr; - return *this; - } - bool operator!=(const iterator& other) const { return ptr != other.ptr; } - }; + using iterator = T*; iterator begin(); iterator end(); @@ -48,19 +37,6 @@ struct vector { unsigned long sz; }; -template <typename T> -vector<T>::vector() : data(nullptr), sz(0) {} - -template <typename T> -typename vector<T>::iterator vector<T>::begin() { - return iterator(data); -} - -template <typename T> -typename vector<T>::iterator vector<T>::end() { - return iterator(data + sz); -} - } // namespace std struct Bar { >From 47a75957d9a21d7d67b0cdbb560646a9bb504567 Mon Sep 17 00:00:00 2001 From: akshaykumars614 <88362922+akshaykumars...@users.noreply.github.com> Date: Sat, 27 Jul 2024 00:08:24 -0400 Subject: [PATCH 4/4] Update ReleaseNotes.rst --- clang-tools-extra/docs/ReleaseNotes.rst | 279 ------------------------ 1 file changed, 279 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index a27a6fad893d8..18535f702b0a6 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -104,289 +104,10 @@ New check aliases Changes in existing checks ^^^^^^^^^^^^^^^^^^^^^^^^^^ -<<<<<<< HEAD -======= -- Improved :doc:`bugprone-assert-side-effect - <clang-tidy/checks/bugprone/assert-side-effect>` check by detecting side - effect from calling a method with non-const reference parameters. - -- Improved :doc:`bugprone-assignment-in-if-condition - <clang-tidy/checks/bugprone/assignment-in-if-condition>` check by ignoring - assignments in the C++20 ``requires`` clause. - -- Improved :doc:`bugprone-casting-through-void - <clang-tidy/checks/bugprone/casting-through-void>` check by ignoring casts - where source is already a ``void``` pointer, making middle ``void`` pointer - casts bug-free. - -- Improved :doc:`bugprone-forwarding-reference-overload - <clang-tidy/checks/bugprone/forwarding-reference-overload>` - check to ignore deleted constructors which won't hide other overloads. - -- Improved :doc:`bugprone-implicit-widening-of-multiplication-result - <clang-tidy/checks/bugprone/implicit-widening-of-multiplication-result>` check - by adding an option to ignore constant expressions of signed integer types - that fit in the source expression type. - -- Improved :doc:`bugprone-inc-dec-in-conditions - <clang-tidy/checks/bugprone/inc-dec-in-conditions>` check to ignore code - within unevaluated contexts, such as ``decltype``. - -- Improved :doc:`bugprone-lambda-function-name<clang-tidy/checks/bugprone/lambda-function-name>` - check by ignoring ``__func__`` macro in lambda captures, initializers of - default parameters and nested function declarations. - -- Improved :doc:`bugprone-multi-level-implicit-pointer-conversion - <clang-tidy/checks/bugprone/multi-level-implicit-pointer-conversion>` check - by ignoring implicit pointer conversions that are part of a cast expression. - -- Improved :doc:`bugprone-non-zero-enum-to-bool-conversion - <clang-tidy/checks/bugprone/non-zero-enum-to-bool-conversion>` check by - eliminating false positives resulting from direct usage of bitwise operators - within parentheses. - -- Improved :doc:`bugprone-optional-value-conversion - <clang-tidy/checks/bugprone/optional-value-conversion>` check by eliminating - false positives resulting from use of optionals in unevaluated context. - -- Improved :doc:`bugprone-sizeof-expression - <clang-tidy/checks/bugprone/sizeof-expression>` check by clarifying the - diagnostics, eliminating some false positives and adding a new - (off-by-default) option `WarnOnSizeOfPointer` that reports all - ``sizeof(pointer)`` expressions (except for a few that are idiomatic). - -- Improved :doc:`bugprone-suspicious-include - <clang-tidy/checks/bugprone/suspicious-include>` check by replacing the local - options `HeaderFileExtensions` and `ImplementationFileExtensions` by the - global options of the same name. - -- Improved :doc:`bugprone-too-small-loop-variable - <clang-tidy/checks/bugprone/too-small-loop-variable>` check by incorporating - better support for ``const`` loop boundaries. - -- Improved :doc:`bugprone-unused-local-non-trivial-variable - <clang-tidy/checks/bugprone/unused-local-non-trivial-variable>` check by - ignoring local variable with ``[maybe_unused]`` attribute. - -- Improved :doc:`bugprone-unused-return-value - <clang-tidy/checks/bugprone/unused-return-value>` check by updating the - parameter `CheckedFunctions` to support regexp, avoiding false positive for - function with the same prefix as the default argument, e.g. ``std::unique_ptr`` - and ``std::unique``, avoiding false positive for assignment operator overloading. - -- Improved :doc:`bugprone-use-after-move - <clang-tidy/checks/bugprone/use-after-move>` check to also handle - calls to ``std::forward``. Fixed sequencing of designated initializers. Fixed - sequencing of callees: In C++17 and later, the callee of a function is guaranteed - to be sequenced before the arguments, so don't warn if the use happens in the - callee and the move happens in one of the arguments. - -- Improved :doc:`cppcoreguidelines-avoid-non-const-global-variables - <clang-tidy/checks/cppcoreguidelines/avoid-non-const-global-variables>` check - with a new option `AllowInternalLinkage` to disable the warning for variables - with internal linkage. - -- Improved :doc:`cppcoreguidelines-macro-usage - <clang-tidy/checks/cppcoreguidelines/macro-usage>` check by ignoring macro with - hash preprocessing token. - -- Improved :doc:`cppcoreguidelines-missing-std-forward - <clang-tidy/checks/cppcoreguidelines/missing-std-forward>` check by no longer - giving false positives for deleted functions, by fixing false negatives when only - a few parameters are forwarded and by ignoring parameters without a name (unused - arguments). - -- Improved :doc:`cppcoreguidelines-owning-memory - <clang-tidy/checks/cppcoreguidelines/owning-memory>` check to properly handle - return type in lambdas and in nested functions. - -- Improved :doc:`cppcoreguidelines-prefer-member-initializer - <clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>` check - by removing enforcement of rule `C.48 - <https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers>`_, - which was deprecated since :program:`clang-tidy` 17. This rule is now covered - by :doc:`cppcoreguidelines-use-default-member-init - <clang-tidy/checks/cppcoreguidelines/use-default-member-init>`. Fixed - incorrect hints when using list-initialization. - -- Improved :doc:`cppcoreguidelines-special-member-functions - <clang-tidy/checks/cppcoreguidelines/special-member-functions>` check with a - new option `AllowImplicitlyDeletedCopyOrMove`, which removes the requirement - for explicit copy or move special member functions when they are already - implicitly deleted. - -- Improved :doc:`google-build-namespaces - <clang-tidy/checks/google/build-namespaces>` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`google-explicit-constructor - <clang-tidy/checks/google/explicit-constructor>` check to better handle - C++20 `explicit(bool)`. - -- Improved :doc:`google-global-names-in-headers - <clang-tidy/checks/google/global-names-in-headers>` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`google-runtime-int <clang-tidy/checks/google/runtime-int>` - check performance through optimizations. - -- Improved :doc:`hicpp-signed-bitwise <clang-tidy/checks/hicpp/signed-bitwise>` - check by ignoring false positives involving positive integer literals behind - implicit casts when `IgnorePositiveIntegerLiterals` is enabled. - -- Improved :doc:`hicpp-ignored-remove-result <clang-tidy/checks/hicpp/ignored-remove-result>` - check by ignoring other functions with same prefixes as the target specific - functions. - -- Improved :doc:`linuxkernel-must-check-errs - <clang-tidy/checks/linuxkernel/must-check-errs>` check documentation to - consistently use the check's proper name. - -- Improved :doc:`llvm-header-guard - <clang-tidy/checks/llvm/header-guard>` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`misc-const-correctness - <clang-tidy/checks/misc/const-correctness>` check by avoiding infinite recursion - for recursive functions with forwarding reference parameters and reference - variables which refer to themselves. - -- Improved :doc:`misc-definitions-in-headers - <clang-tidy/checks/misc/definitions-in-headers>` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - Additionally, the option `UseHeaderFileExtensions` is removed, so that the - check uses the `HeaderFileExtensions` option unconditionally. - -- Improved :doc:`misc-header-include-cycle - <clang-tidy/checks/misc/header-include-cycle>` check by avoiding crash for self - include cycles. - -- Improved :doc:`misc-unused-using-decls - <clang-tidy/checks/misc/unused-using-decls>` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`misc-use-anonymous-namespace - <clang-tidy/checks/misc/use-anonymous-namespace>` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`modernize-avoid-c-arrays - <clang-tidy/checks/modernize/avoid-c-arrays>` check by introducing the new - `AllowStringArrays` option, enabling the exclusion of array types with deduced - length initialized from string literals. - -- Improved :doc:`modernize-loop-convert - <clang-tidy/checks/modernize/loop-convert>` check by ensuring that fix-its - don't remove parentheses used in ``sizeof`` calls when they have array index - accesses as arguments. - -- Improved :doc:`modernize-use-constraints - <clang-tidy/checks/modernize/use-constraints>` check by fixing a crash that - occurred in some scenarios and excluding system headers from analysis. - -- Improved :doc:`modernize-use-nullptr - <clang-tidy/checks/modernize/use-nullptr>` check to include support for C23, - which also has introduced the ``nullptr`` keyword. - -- Improved :doc:`modernize-use-override - <clang-tidy/checks/modernize/use-override>` check to also remove any trailing - whitespace when deleting the ``virtual`` keyword. - -- Improved :doc:`modernize-use-starts-ends-with - <clang-tidy/checks/modernize/use-starts-ends-with>` check to also handle - calls to ``compare`` method. - -- Improved :doc:`modernize-use-std-print - <clang-tidy/checks/modernize/use-std-print>` check to not crash if the - format string parameter of the function to be replaced is not of the - expected type. - -- Improved :doc:`modernize-use-using <clang-tidy/checks/modernize/use-using>` - check by adding support for detection of typedefs declared on function level. - -- Improved :doc:`performance-inefficient-vector-operation - <clang-tidy/checks/performance/inefficient-vector-operation>` fixing false - negatives caused by different variable definition type and variable initial - value type in loop initialization expression. - -- Improved :doc:`performance-move-const-arg - <clang-tidy/checks/performance/move-const-arg>` check by ignoring - ``std::move()`` calls when their target is used as an rvalue. - -- Improved :doc:`performance-unnecessary-copy-initialization - <clang-tidy/checks/performance/unnecessary-copy-initialization>` check by - detecting more cases of constant access. In particular, pointers can be - analyzed, so the check now handles the common patterns - `const auto e = (*vector_ptr)[i]` and `const auto e = vector_ptr->at(i);`. - Calls to mutable function where there exists a `const` overload are also - handled. Fix crash in the case of a non-member operator call. - -- Improved :doc:`performance-unnecessary-value-param - <clang-tidy/checks/performance/unnecessary-value-param>` check - detecting more cases for template functions including lambdas with ``auto``. - E.g., ``std::sort(a.begin(), a.end(), [](auto x, auto y) { return a > b; });`` - will be detected for expensive to copy types. Fixed false positives for - dependent call expressions. - -- Improved :doc:`readability-avoid-return-with-void-value - <clang-tidy/checks/readability/avoid-return-with-void-value>` check by adding - fix-its. - -- Improved :doc:`readability-const-return-type - <clang-tidy/checks/readability/const-return-type>` check to eliminate false - positives when returning types with const not at the top level. - -- Improved :doc:`readability-container-size-empty - <clang-tidy/checks/readability/container-size-empty>` check to prevent false - positives when utilizing ``size`` or ``length`` methods that accept parameter. - Fixed crash when facing template user defined literals. - -- Improved :doc:`readability-duplicate-include - <clang-tidy/checks/readability/duplicate-include>` check by excluding include - directives that form the filename using macro. - -- Improved :doc:`readability-else-after-return - <clang-tidy/checks/readability/else-after-return>` check to ignore - `if consteval` statements, for which the `else` branch must not be removed. - -- Improved :doc:`readability-identifier-naming - <clang-tidy/checks/readability/identifier-naming>` check in `GetConfigPerFile` - mode by resolving symbolic links to header files. Fixed handling of Hungarian - Prefix when configured to `LowerCase`. Added support for renaming designated - initializers. Added support for renaming macro arguments. Fixed renaming - conflicts arising from out-of-line member function template definitions. - -- Improved :doc:`readability-implicit-bool-conversion - <clang-tidy/checks/readability/implicit-bool-conversion>` check to provide - valid fix suggestions for ``static_cast`` without a preceding space and - fixed problem with duplicate parentheses in double implicit casts. Corrected - the fix suggestions for C23 and later by using C-style casts instead of - ``static_cast``. Fixed false positives in C++20 spaceship operator by ignoring - casts in implicit and defaulted functions. - -- Improved :doc:`readability-redundant-inline-specifier - <clang-tidy/checks/readability/redundant-inline-specifier>` check to properly - emit warnings for static data member with an in-class initializer. - -- Improved :doc:`readability-redundant-member-init - <clang-tidy/checks/readability/redundant-member-init>` check to avoid - false-positives when type of the member does not match the type of the - initializer. - - Improved :doc:`readability-redundant-smartptr-get <clang-tidy/checks/readability/redundant-smartptr-get>` check to remove '->', when reduntant get() is removed. -- Improved :doc:`readability-static-accessed-through-instance - <clang-tidy/checks/readability/static-accessed-through-instance>` check to - support calls to overloaded operators as base expression and provide fixes to - expressions with side-effects. - ->>>>>>> 0421519378d8 (clang-tidy: readability-redundant-smartptr-get does not remove (#97964)) -- Improved :doc:`readability-simplify-boolean-expr - <clang-tidy/checks/readability/simplify-boolean-expr>` check to avoid to emit - warning for macro when IgnoreMacro option is enabled and improve messages - when auto-fix does not work. - Removed checks ^^^^^^^^^^^^^^ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits