[clang-tools-extra] r284888 - Remove 'misc-pointer-and-integral-operation' clang-tidy check. The only cases
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 24 08:31:09 PDT 2016
Wait, I thought the check was mostly useful for C code, where it detects
real issues? Etienne, can you comment?
On Fri, Oct 21, 2016 at 11:50 PM, Richard Smith via cfe-commits <
cfe-commits at lists.llvm.org> wrote:
> Author: rsmith
> Date: Fri Oct 21 16:50:28 2016
> New Revision: 284888
>
> URL: http://llvm.org/viewvc/llvm-project?rev=284888&view=rev
> Log:
> Remove 'misc-pointer-and-integral-operation' clang-tidy check. The only
> cases
> it detects are ill-formed (some per C++ core issue 1512, others always have
> been).
>
> Removed:
> clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationChe
> ck.cpp
> clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationChe
> ck.h
> clang-tools-extra/trunk/docs/clang-tidy/checks/misc-
> pointer-and-integral-operation.rst
> clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-
> integral-operation-cxx98.cpp
> clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-
> integral-operation.cpp
> Modified:
> clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/Resources/
> ClangTidyChecks.yaml
> clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt
> clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp
> clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
>
> Modified: clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/Resources/
> ClangTidyChecks.yaml
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/clang-tidy-vs/ClangTidy/Resources/ClangTidyChecks.
> yaml?rev=284888&r1=284887&r2=284888&view=diff
> ============================================================
> ==================
> --- clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/Resources/ClangTidyChecks.yaml
> (original)
> +++ clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/Resources/ClangTidyChecks.yaml
> Fri Oct 21 16:50:28 2016
> @@ -239,10 +239,6 @@ Checks:
> Description:
> Name: misc-non-copyable-objects
> - Category: Miscellaneous
> - Label: Suspicious pointer / integer operations
> - Description:
> - Name: misc-pointer-and-integral-operation
> - - Category: Miscellaneous
> Label: Find redundant expressions
> Description:
> Name: misc-redundant-expression
>
> Modified: clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/clang-tidy/misc/CMakeLists.txt?rev=284888&r1=
> 284887&r2=284888&view=diff
> ============================================================
> ==================
> --- clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt (original)
> +++ clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt Fri Oct 21
> 16:50:28 2016
> @@ -24,7 +24,6 @@ add_clang_library(clangTidyMiscModule
> NewDeleteOverloadsCheck.cpp
> NoexceptMoveConstructorCheck.cpp
> NonCopyableObjects.cpp
> - PointerAndIntegralOperationCheck.cpp
> RedundantExpressionCheck.cpp
> SizeofContainerCheck.cpp
> SizeofExpressionCheck.cpp
>
> Modified: clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/clang-tidy/misc/MiscTidyModule.cpp?rev=284888&
> r1=284887&r2=284888&view=diff
> ============================================================
> ==================
> --- clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp (original)
> +++ clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp Fri Oct 21
> 16:50:28 2016
> @@ -32,7 +32,6 @@
> #include "NewDeleteOverloadsCheck.h"
> #include "NoexceptMoveConstructorCheck.h"
> #include "NonCopyableObjects.h"
> -#include "PointerAndIntegralOperationCheck.h"
> #include "RedundantExpressionCheck.h"
> #include "SizeofContainerCheck.h"
> #include "SizeofExpressionCheck.h"
> @@ -104,8 +103,6 @@ public:
> "misc-noexcept-move-constructor");
> CheckFactories.registerCheck<NonCopyableObjectsCheck>(
> "misc-non-copyable-objects");
> - CheckFactories.registerCheck<PointerAndIntegralOperationCheck>(
> - "misc-pointer-and-integral-operation");
> CheckFactories.registerCheck<RedundantExpressionCheck>(
> "misc-redundant-expression");
> CheckFactories.registerCheck<SizeofContainerCheck>("misc-
> sizeof-container");
>
> Removed: clang-tools-extra/trunk/clang-tidy/misc/
> PointerAndIntegralOperationCheck.cpp
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/clang-tidy/misc/PointerAndIntegralOperationChe
> ck.cpp?rev=284887&view=auto
> ============================================================
> ==================
> --- clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationCheck.cpp
> (original)
> +++ clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationCheck.cpp
> (removed)
> @@ -1,104 +0,0 @@
> -//===--- PointerAndIntegralOperationCheck.cpp -
> clang-tidy-----------------===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===------------------------------------------------------
> ----------------===//
> -
> -#include "PointerAndIntegralOperationCheck.h"
> -#include "clang/AST/ASTContext.h"
> -#include "clang/ASTMatchers/ASTMatchFinder.h"
> -#include "../utils/Matchers.h"
> -
> -using namespace clang::ast_matchers;
> -
> -namespace clang {
> -namespace tidy {
> -namespace misc {
> -
> -void PointerAndIntegralOperationCheck::registerMatchers(MatchFinder
> *Finder) {
> - const auto PointerExpr = expr(hasType(pointerType()));
> - const auto BoolExpr = ignoringParenImpCasts(hasType(booleanType()));
> - const auto CharExpr = ignoringParenImpCasts(hasType(isAnyCharacter()));
> -
> - const auto BinOpWithPointerExpr =
> - binaryOperator(unless(anyOf(hasOperatorName(","),
> hasOperatorName("="))),
> - hasEitherOperand(PointerExpr));
> -
> - const auto AssignToPointerExpr =
> - binaryOperator(hasOperatorName("="), hasLHS(PointerExpr));
> -
> - const auto CompareToPointerExpr =
> - binaryOperator(matchers::isRelationalOperator(),
> - hasEitherOperand(PointerExpr));
> -
> - // Detect expression like: ptr = (x != y);
> - Finder->addMatcher(binaryOperator(AssignToPointerExpr,
> hasRHS(BoolExpr))
> - .bind("assign-bool-to-pointer"),
> - this);
> -
> - // Detect expression like: ptr = A[i]; where A is char*.
> - Finder->addMatcher(binaryOperator(AssignToPointerExpr,
> hasRHS(CharExpr))
> - .bind("assign-char-to-pointer"),
> - this);
> -
> - // Detect expression like: ptr < false;
> - Finder->addMatcher(
> - binaryOperator(BinOpWithPointerExpr,
> - hasEitherOperand(ignoringParenImpCasts(
> cxxBoolLiteral())))
> - .bind("pointer-and-bool-literal"),
> - this);
> -
> - // Detect expression like: ptr < 'a';
> - Finder->addMatcher(binaryOperator(BinOpWithPointerExpr,
> - hasEitherOperand(
> ignoringParenImpCasts(
> - characterLiteral())))
> - .bind("pointer-and-char-literal"),
> - this);
> -
> - // Detect expression like: ptr < 0;
> - Finder->addMatcher(binaryOperator(CompareToPointerExpr,
> - hasEitherOperand(
> ignoringParenImpCasts(
> - integerLiteral(equals(0)))))
> - .bind("compare-pointer-to-zero"),
> - this);
> -
> - // Detect expression like: ptr < nullptr;
> - Finder->addMatcher(binaryOperator(CompareToPointerExpr,
> - hasEitherOperand(
> ignoringParenImpCasts(
> - cxxNullPtrLiteralExpr())))
> - .bind("compare-pointer-to-null"),
> - this);
> -}
> -
> -void PointerAndIntegralOperationCheck::check(
> - const MatchFinder::MatchResult &Result) {
> - if (const auto *E =
> - Result.Nodes.getNodeAs<BinaryOperator>("assign-bool-to-pointer"))
> {
> - diag(E->getOperatorLoc(), "suspicious assignment from bool to
> pointer");
> - } else if (const auto *E = Result.Nodes.getNodeAs<BinaryOperator>(
> - "assign-char-to-pointer")) {
> - diag(E->getOperatorLoc(), "suspicious assignment from char to
> pointer");
> - } else if (const auto *E = Result.Nodes.getNodeAs<BinaryOperator>(
> - "pointer-and-bool-literal")) {
> - diag(E->getOperatorLoc(),
> - "suspicious operation between pointer and bool literal");
> - } else if (const auto *E = Result.Nodes.getNodeAs<BinaryOperator>(
> - "pointer-and-char-literal")) {
> - diag(E->getOperatorLoc(),
> - "suspicious operation between pointer and character literal");
> - } else if (const auto *E = Result.Nodes.getNodeAs<BinaryOperator>(
> - "compare-pointer-to-zero")) {
> - diag(E->getOperatorLoc(), "suspicious comparison of pointer with
> zero");
> - } else if (const auto *E = Result.Nodes.getNodeAs<BinaryOperator>(
> - "compare-pointer-to-null")) {
> - diag(E->getOperatorLoc(),
> - "suspicious comparison of pointer with null expression");
> - }
> -}
> -
> -} // namespace misc
> -} // namespace tidy
> -} // namespace clang
>
> Removed: clang-tools-extra/trunk/clang-tidy/misc/
> PointerAndIntegralOperationCheck.h
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/clang-tidy/misc/PointerAndIntegralOperationChe
> ck.h?rev=284887&view=auto
> ============================================================
> ==================
> --- clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationCheck.h
> (original)
> +++ clang-tools-extra/trunk/clang-tidy/misc/PointerAndIntegralOperationCheck.h
> (removed)
> @@ -1,35 +0,0 @@
> -//===--- PointerAndIntegralOperationCheck.h - clang-tidy---------*- C++
> -*-===//
> -//
> -// The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===------------------------------------------------------
> ----------------===//
> -
> -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_POINTER_AND_
> INTEGRAL_OPERATION_H
> -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_POINTER_AND_
> INTEGRAL_OPERATION_H
> -
> -#include "../ClangTidy.h"
> -
> -namespace clang {
> -namespace tidy {
> -namespace misc {
> -
> -/// Find suspicious expressions involving pointer and integral types.
> -///
> -/// For the user-facing documentation see:
> -/// http://clang.llvm.org/extra/clang-tidy/checks/misc-
> pointer-and-integral-operation.html
> -class PointerAndIntegralOperationCheck : public ClangTidyCheck {
> -public:
> - PointerAndIntegralOperationCheck(StringRef Name, ClangTidyContext
> *Context)
> - : ClangTidyCheck(Name, Context) {}
> - void registerMatchers(ast_matchers::MatchFinder *Finder) override;
> - void check(const ast_matchers::MatchFinder::MatchResult &Result)
> override;
> -};
> -
> -} // namespace misc
> -} // namespace tidy
> -} // namespace clang
> -
> -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_POINTER_AND_
> INTEGRAL_OPERATION_H
>
> Modified: 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=284888&r1=284887&
> r2=284888&view=diff
> ============================================================
> ==================
> --- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original)
> +++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Fri Oct 21
> 16:50:28 2016
> @@ -74,7 +74,6 @@ Clang-Tidy Checks
> misc-new-delete-overloads
> misc-noexcept-move-constructor
> misc-non-copyable-objects
> - misc-pointer-and-integral-operation
> misc-redundant-expression
> misc-sizeof-container
> misc-sizeof-expression
>
> Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-
> pointer-and-integral-operation.rst
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/docs/clang-tidy/checks/misc-pointer-and-integral-
> operation.rst?rev=284887&view=auto
> ============================================================
> ==================
> --- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-
> pointer-and-integral-operation.rst (original)
> +++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-
> pointer-and-integral-operation.rst (removed)
> @@ -1,24 +0,0 @@
> -.. title:: clang-tidy - misc-pointer-and-integral-operation
> -
> -misc-pointer-and-integral-operation
> -===================================
> -
> -Looks for operation involving pointers and integral types. A common
> mistake is
> -to forget to dereference a pointer. These errors may be detected when a
> pointer
> -object is compare to an object with integral type.
> -
> -Examples:
> -
> -.. code-block:: c++
> -
> - char* ptr;
> - if ((ptr = malloc(...)) < nullptr) // Pointer comparison with
> operator '<'
> - ... // Should probably be '!='
> -
> - if (ptr == '\0') // Should probably be *ptr
> - ...
> -
> - void Process(std::string path, bool* error) {
> - [...]
> - if (error != false) // Should probably be *error
> - ...
>
> Removed: clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-
> integral-operation-cxx98.cpp
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/test/clang-tidy/misc-pointer-and-integral-operation-cxx98.cpp?rev=
> 284887&view=auto
> ============================================================
> ==================
> --- clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-integral-operation-cxx98.cpp
> (original)
> +++ clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-integral-operation-cxx98.cpp
> (removed)
> @@ -1,45 +0,0 @@
> -// RUN: %check_clang_tidy %s misc-pointer-and-integral-operation %t --
> -- -std=c++98
> -
> -bool* pb;
> -char* pc;
> -int* pi;
> -
> -int Test() {
> - pb = false;
> - // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from
> bool to pointer [misc-pointer-and-integral-operation]
> - pc = '\0';
> - // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from
> char to pointer
> -
> - pb = (false?false:false);
> - // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from
> bool to pointer
> - pb = (4 != 5?false:false);
> - // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: suspicious assignment from
> bool to pointer
> -
> - if (pb < false) return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation
> between pointer and bool literal
> - if (pb != false) return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation
> between pointer and bool literal
> - if (pc < '\0') return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation
> between pointer and character literal
> - if (pc != '\0') return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation
> between pointer and character literal
> - if (pi < '\0') return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation
> between pointer and character literal
> - if (pi != '\0') return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious operation
> between pointer and character literal
> -
> - return 1;
> -}
> -
> -int Valid() {
> - *pb = false;
> - *pc = '\0';
> -
> - pb += 0;
> - pc += 0;
> - pi += 0;
> -
> - pb += (pb != 0);
> - pc += (pc != 0);
> - pi += (pi != 0);
> -}
>
> Removed: clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-
> integral-operation.cpp
> URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/
> trunk/test/clang-tidy/misc-pointer-and-integral-
> operation.cpp?rev=284887&view=auto
> ============================================================
> ==================
> --- clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-integral-operation.cpp
> (original)
> +++ clang-tools-extra/trunk/test/clang-tidy/misc-pointer-and-integral-operation.cpp
> (removed)
> @@ -1,30 +0,0 @@
> -// RUN: %check_clang_tidy %s misc-pointer-and-integral-operation %t
> -
> -bool* pb;
> -char* pc;
> -int* pi;
> -
> -int Test() {
> - if (pi < 0) return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of
> pointer with zero [misc-pointer-and-integral-operation]
> - if (pi <= 0) return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of
> pointer with zero
> -
> - if (nullptr <= pb) return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: suspicious comparison of
> pointer with null
> - if (pc < nullptr) return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of
> pointer with null
> - if (pi > nullptr) return 0;
> - // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: suspicious comparison of
> pointer with null
> -
> - return 1;
> -}
> -
> -int Valid() {
> - *pb = false;
> - *pc = '\0';
> -
> - pi += (pi != nullptr);
> - pi -= (pi == nullptr);
> - pc += (pb != nullptr);
> -}
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161024/80be15e2/attachment-0001.html>
More information about the cfe-commits
mailing list