[PATCH] D36892: [clang-tidy] check_clang_tidy.py: support CHECK-NOTES prefix

Roman Lebedev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 30 05:25:57 PDT 2017


lebedev.ri added a comment.

In https://reviews.llvm.org/D36892#856469, @aaron.ballman wrote:

> Instead of CHECK-NOTES, do we want to extend CHECK-MESSAGES to handle `note` in addition to `warning` and `error`?


If i change `CHECK-MESSAGES` to also require all the notes to be checked, a *lot* of tests fail:

  ********************
  Testing Time: 4.04s
  ********************
  Failing Tests (165):
      Clang Tools :: clang-tidy/android-cloexec-accept.cpp
      Clang Tools :: clang-tidy/android-cloexec-accept4.cpp
      Clang Tools :: clang-tidy/android-cloexec-creat.cpp
      Clang Tools :: clang-tidy/android-cloexec-dup.cpp
      Clang Tools :: clang-tidy/android-cloexec-epoll-create.cpp
      Clang Tools :: clang-tidy/android-cloexec-epoll-create1.cpp
      Clang Tools :: clang-tidy/android-cloexec-fopen.cpp
      Clang Tools :: clang-tidy/android-cloexec-inotify-init.cpp
      Clang Tools :: clang-tidy/android-cloexec-inotify-init1.cpp
      Clang Tools :: clang-tidy/android-cloexec-memfd-create.cpp
      Clang Tools :: clang-tidy/android-cloexec-open.cpp
      Clang Tools :: clang-tidy/android-cloexec-socket.cpp
      Clang Tools :: clang-tidy/boost-use-to-string.cpp
      Clang Tools :: clang-tidy/bugprone-integer-division.cpp
      Clang Tools :: clang-tidy/bugprone-suspicious-memset-usage.cpp
      Clang Tools :: clang-tidy/bugprone-undefined-memory-manipulation.cpp
      Clang Tools :: clang-tidy/cert-dcl21-cpp.cpp
      Clang Tools :: clang-tidy/cert-oop11-cpp.cpp
      Clang Tools :: clang-tidy/clean-up-code.cpp
      Clang Tools :: clang-tidy/cppcoreguidelines-pro-bounds-constant-array-index-gslheader.cpp
      Clang Tools :: clang-tidy/cppcoreguidelines-pro-type-cstyle-cast.cpp
      Clang Tools :: clang-tidy/cppcoreguidelines-pro-type-member-init-cxx98.cpp
      Clang Tools :: clang-tidy/cppcoreguidelines-pro-type-member-init-delayed.cpp
      Clang Tools :: clang-tidy/cppcoreguidelines-pro-type-member-init.cpp
      Clang Tools :: clang-tidy/cppcoreguidelines-pro-type-static-cast-downcast.cpp
      Clang Tools :: clang-tidy/cppcoreguidelines-pro-type-vararg.cpp
      Clang Tools :: clang-tidy/deduplication.cpp
      Clang Tools :: clang-tidy/google-build-explicit-make-pair.cpp
      Clang Tools :: clang-tidy/google-explicit-constructor.cpp
      Clang Tools :: clang-tidy/google-readability-casting.c
      Clang Tools :: clang-tidy/google-readability-casting.cpp
      Clang Tools :: clang-tidy/google-readability-namespace-comments.cpp
      Clang Tools :: clang-tidy/google-readability-todo.cpp
      Clang Tools :: clang-tidy/llvm-include-order.cpp
      Clang Tools :: clang-tidy/llvm-twine-local.cpp
      Clang Tools :: clang-tidy/misc-argument-comment-gmock.cpp
      Clang Tools :: clang-tidy/misc-argument-comment-strict.cpp
      Clang Tools :: clang-tidy/misc-argument-comment.cpp
      Clang Tools :: clang-tidy/misc-assert-side-effect.cpp
      Clang Tools :: clang-tidy/misc-bool-pointer-implicit-conversion.cpp
      Clang Tools :: clang-tidy/misc-definitions-in-headers.hpp
      Clang Tools :: clang-tidy/misc-forwarding-reference-overload.cpp
      Clang Tools :: clang-tidy/misc-inaccurate-erase.cpp
      Clang Tools :: clang-tidy/misc-inefficient-algorithm.cpp
      Clang Tools :: clang-tidy/misc-lambda-function-name.cpp
      Clang Tools :: clang-tidy/misc-macro-parentheses.cpp
      Clang Tools :: clang-tidy/misc-macro-repeated-side-effects.c
      Clang Tools :: clang-tidy/misc-misplaced-const.c
      Clang Tools :: clang-tidy/misc-misplaced-const.cpp
      Clang Tools :: clang-tidy/misc-move-const-arg.cpp
      Clang Tools :: clang-tidy/misc-move-constructor-init.cpp
      Clang Tools :: clang-tidy/misc-move-forwarding-reference.cpp
      Clang Tools :: clang-tidy/misc-multiple-statement-macro.cpp
      Clang Tools :: clang-tidy/misc-static-assert.c
      Clang Tools :: clang-tidy/misc-static-assert.cpp
      Clang Tools :: clang-tidy/misc-string-compare.cpp
      Clang Tools :: clang-tidy/misc-string-constructor.cpp
      Clang Tools :: clang-tidy/misc-string-integer-assignment.cpp
      Clang Tools :: clang-tidy/misc-suspicious-semicolon.cpp
      Clang Tools :: clang-tidy/misc-suspicious-string-compare.c
      Clang Tools :: clang-tidy/misc-suspicious-string-compare.cpp
      Clang Tools :: clang-tidy/misc-swapped-arguments.cpp
      Clang Tools :: clang-tidy/misc-uniqueptr-reset-release.cpp
      Clang Tools :: clang-tidy/misc-unused-alias-decls.cpp
      Clang Tools :: clang-tidy/misc-unused-parameters.c
      Clang Tools :: clang-tidy/misc-unused-parameters.cpp
      Clang Tools :: clang-tidy/misc-unused-raii.cpp
      Clang Tools :: clang-tidy/misc-unused-using-decls.cpp
      Clang Tools :: clang-tidy/misc-virtual-near-miss.cpp
      Clang Tools :: clang-tidy/modernize-avoid-bind.cpp
      Clang Tools :: clang-tidy/modernize-deprecated-headers-cxx03.cpp
      Clang Tools :: clang-tidy/modernize-deprecated-headers-cxx11.cpp
      Clang Tools :: clang-tidy/modernize-loop-convert-basic.cpp
      Clang Tools :: clang-tidy/modernize-loop-convert-camelback.cpp
      Clang Tools :: clang-tidy/modernize-loop-convert-const.cpp
      Clang Tools :: clang-tidy/modernize-loop-convert-extra.cpp
      Clang Tools :: clang-tidy/modernize-loop-convert-lowercase.cpp
      Clang Tools :: clang-tidy/modernize-loop-convert-uppercase.cpp
      Clang Tools :: clang-tidy/modernize-make-shared-header.cpp
      Clang Tools :: clang-tidy/modernize-make-shared.cpp
      Clang Tools :: clang-tidy/modernize-make-unique-header.cpp
      Clang Tools :: clang-tidy/modernize-make-unique.cpp
      Clang Tools :: clang-tidy/modernize-pass-by-value-macro-header.cpp
      Clang Tools :: clang-tidy/modernize-pass-by-value.cpp
      Clang Tools :: clang-tidy/modernize-raw-string-literal-delimiter.cpp
      Clang Tools :: clang-tidy/modernize-raw-string-literal-replace-shorter.cpp
      Clang Tools :: clang-tidy/modernize-raw-string-literal.cpp
      Clang Tools :: clang-tidy/modernize-redundant-void-arg-delayed.cpp
      Clang Tools :: clang-tidy/modernize-redundant-void-arg.cpp
      Clang Tools :: clang-tidy/modernize-replace-auto-ptr.cpp
      Clang Tools :: clang-tidy/modernize-return-braced-init-list.cpp
      Clang Tools :: clang-tidy/modernize-shrink-to-fit.cpp
      Clang Tools :: clang-tidy/modernize-unary-static-assert.cpp
      Clang Tools :: clang-tidy/modernize-use-auto-cast-remove-stars.cpp
      Clang Tools :: clang-tidy/modernize-use-auto-cast.cpp
      Clang Tools :: clang-tidy/modernize-use-auto-iterator.cpp
      Clang Tools :: clang-tidy/modernize-use-auto-new-remove-stars.cpp
      Clang Tools :: clang-tidy/modernize-use-auto-new.cpp
      Clang Tools :: clang-tidy/modernize-use-bool-literals-ignore-macros.cpp
      Clang Tools :: clang-tidy/modernize-use-bool-literals.cpp
      Clang Tools :: clang-tidy/modernize-use-default-member-init-assignment.cpp
      Clang Tools :: clang-tidy/modernize-use-default-member-init-macros.cpp
      Clang Tools :: clang-tidy/modernize-use-default-member-init.cpp
      Clang Tools :: clang-tidy/modernize-use-emplace-ignore-implicit-constructors.cpp
      Clang Tools :: clang-tidy/modernize-use-emplace.cpp
      Clang Tools :: clang-tidy/modernize-use-equals-default-copy.cpp
      Clang Tools :: clang-tidy/modernize-use-equals-default.cpp
      Clang Tools :: clang-tidy/modernize-use-equals-delete.cpp
      Clang Tools :: clang-tidy/modernize-use-noexcept-macro.cpp
      Clang Tools :: clang-tidy/modernize-use-noexcept-opt.cpp
      Clang Tools :: clang-tidy/modernize-use-noexcept.cpp
      Clang Tools :: clang-tidy/modernize-use-nullptr-basic.cpp
      Clang Tools :: clang-tidy/modernize-use-nullptr.cpp
      Clang Tools :: clang-tidy/modernize-use-override-ms.cpp
      Clang Tools :: clang-tidy/modernize-use-override.cpp
      Clang Tools :: clang-tidy/modernize-use-transparent-functors.cpp
      Clang Tools :: clang-tidy/modernize-use-using-macros.cpp
      Clang Tools :: clang-tidy/modernize-use-using.cpp
      Clang Tools :: clang-tidy/nolint.cpp
      Clang Tools :: clang-tidy/nolintnextline.cpp
      Clang Tools :: clang-tidy/performance-faster-string-find.cpp
      Clang Tools :: clang-tidy/performance-for-range-copy-warn-on-all-auto-copies.cpp
      Clang Tools :: clang-tidy/performance-for-range-copy.cpp
      Clang Tools :: clang-tidy/performance-inefficient-vector-operation.cpp
      Clang Tools :: clang-tidy/performance-type-promotion-in-math-fn.cpp
      Clang Tools :: clang-tidy/performance-unnecessary-copy-initialization.cpp
      Clang Tools :: clang-tidy/performance-unnecessary-value-param-delayed.cpp
      Clang Tools :: clang-tidy/performance-unnecessary-value-param-header.cpp
      Clang Tools :: clang-tidy/performance-unnecessary-value-param-incomplete-type.cpp
      Clang Tools :: clang-tidy/performance-unnecessary-value-param.cpp
      Clang Tools :: clang-tidy/readability-avoid-const-params-in-decls.cpp
      Clang Tools :: clang-tidy/readability-braces-around-statements-few-lines.cpp
      Clang Tools :: clang-tidy/readability-braces-around-statements-format.cpp
      Clang Tools :: clang-tidy/readability-braces-around-statements-same-line.cpp
      Clang Tools :: clang-tidy/readability-braces-around-statements-single-line.cpp
      Clang Tools :: clang-tidy/readability-braces-around-statements.cpp
      Clang Tools :: clang-tidy/readability-container-size-empty.cpp
      Clang Tools :: clang-tidy/readability-delete-null-pointer.cpp
      Clang Tools :: clang-tidy/readability-else-after-return.cpp
      Clang Tools :: clang-tidy/readability-function-size.cpp
      Clang Tools :: clang-tidy/readability-identifier-naming.cpp
      Clang Tools :: clang-tidy/readability-implicit-bool-conversion-allow-in-conditions.cpp
      Clang Tools :: clang-tidy/readability-implicit-bool-conversion-cxx98.cpp
      Clang Tools :: clang-tidy/readability-implicit-bool-conversion.cpp
      Clang Tools :: clang-tidy/readability-inconsistent-declaration-parameter-name.cpp
      Clang Tools :: clang-tidy/readability-misplaced-array-index.cpp
      Clang Tools :: clang-tidy/readability-named-parameter.cpp
      Clang Tools :: clang-tidy/readability-non-const-parameter.cpp
      Clang Tools :: clang-tidy/readability-redundant-control-flow.cpp
      Clang Tools :: clang-tidy/readability-redundant-declaration-ignore-macros.cpp
      Clang Tools :: clang-tidy/readability-redundant-declaration.cpp
      Clang Tools :: clang-tidy/readability-redundant-function-ptr-dereference.cpp
      Clang Tools :: clang-tidy/readability-redundant-member-init.cpp
      Clang Tools :: clang-tidy/readability-redundant-smartptr-get.cpp
      Clang Tools :: clang-tidy/readability-redundant-string-cstr-msvc.cpp
      Clang Tools :: clang-tidy/readability-redundant-string-cstr.cpp
      Clang Tools :: clang-tidy/readability-redundant-string-init-msvc.cpp
      Clang Tools :: clang-tidy/readability-redundant-string-init.cpp
      Clang Tools :: clang-tidy/readability-simplify-bool-expr-chained-conditional-assignment.cpp
      Clang Tools :: clang-tidy/readability-simplify-bool-expr-chained-conditional-return.cpp
      Clang Tools :: clang-tidy/readability-simplify-bool-expr.cpp
      Clang Tools :: clang-tidy/readability-static-accessed-through-instance-nesting-threshold.cpp
      Clang Tools :: clang-tidy/readability-static-accessed-through-instance.cpp
      Clang Tools :: clang-tidy/readability-static-definition-in-anonymous-namespace.cpp
      Clang Tools :: clang-tidy/readability-uniqueptr-delete-release.cpp
  
    Expected Passes    : 392
    Unexpected Failures: 165



> I'd prefer to keep the number of "magic" names as low as possible so I have to remember less stuff when writing or reviewing tests.

I do agree that it makes sense to keep it as low as possible, but also i see a clear logic between all thee current checks:
There are [currently] three types of output out of clang-tidy check that we care about: fix-it; error, warning, note.

- The `CHECK-FIXES` is special, and only looks for fix-its.
- It would make sense to always check all the error messages, thus rest of the magic does enforce `-implicit-check-not=error`
- *  `CHECK-MESSAGES` additionally enforces `-implicit-check-not=warning`
- None of those two magics care about `notes`
- *  So i'm adding `CHECK-NOTES`, which is a `CHECK-MESSAGES` + `-implicit-check-not=note`


Repository:
  rL LLVM

https://reviews.llvm.org/D36892





More information about the cfe-commits mailing list