[cfe-dev] How to verify clang-tidy checks applied to headers?
Artem Dergachev via cfe-dev
cfe-dev at lists.llvm.org
Fri Dec 28 00:00:30 PST 2018
I don't know much about clang-tidy tests, but i had a quick look.
Because clang-tidy checks are FileCheck-based, it should be trivial to
specify in the main file that the warning needs to come from another
file, from a specific line, by simply matching the output. Matching that
it *doesn't* appear in a certain file on a certain line is more fragile
though, because the other file may change and you won't notice how your
test breaks.
So, yeah, i guess it's better to put CHECK: lines into the header
itself, and then tell FileCheck to use the *header* as the input file.
I'm not sure if %check_clang_tidy aka check_clang_tidy.py supports such
behavior. If not, you should be able to do that manually, but of course
you'll also need to pipe it into FileCheck manually for any checks to
happen.
On 12/26/18 4:39 PM, Richard via cfe-dev wrote:
> Hi,
>
> I'm trying to write a test for this bug:
> <https://bugs.llvm.org/show_bug.cgi?id=26332>
>
> Namely, that clang-tidy check readability-simplify-boolean-expr
> doesn't apply to the user's header files correctly.
>
> So I wrote a cpp file like this:
>
> ====
> // RUN: %check_clang_tidy %s readability-simplify-boolean-expr %t
>
> #include "readability-simplify-bool-expr.h"
> ====
>
> and I copied readability-simplify-bool-expr.cpp to
> readability-simplify-bool-expr.h to cover all the same cases in a
> header as are covered in a source file.
>
> However, I encounter two problems. First, I encounter the complaint
> from %check_clang_tidy that my source file contains no CHECK lines.
> If I add a bogus CHECK-MESSAGES comment to my source file, then I can
> continue, but the check still fails to report messages from the
> included header.
>
> I tried changing the run line to invoke clang-tidy directly so I could
> specify -header-filter, but that also failed to work.
>
> I can run clang-tidy manually with -header-filter and get the
> necessary diagnostics, but I need to run this under the test framework
> to verify that the diagnostic described in the bug is missing.
>
> How can I achieve this?
>
> Thanks.
More information about the cfe-dev
mailing list