[PATCH] D12761: MPI-Checker patch for Clang Static Analyzer
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 9 04:18:30 PST 2015
alexfh added a comment.
In http://reviews.llvm.org/D12761#304823, @Alexander_Droste wrote:
> Ah ok, I wasn't aware that clang-tidy is not restricted to checks which verify stylistic issues.
> What makes it more convenient to integrate the checks in clang-tidy? Is it how the AST-Matcher
> functionality can be accessed?
Yes, less boilerplate code needed to work with AST matchers, powerful clang diagnostic infrastructure is used to report errors, also the add_new_check.py script ;)
> > I'm not an expert in the static analyzer code, so I'm not the one to review even AST-based checks there.
>
>
> The AST-based checks basically use zero functionality from the static analyzer codebase
> except the entry callback and the functionality to generate bug reports.
Well, that's one of the ways to say that I have little experience and interest in reviewing patches to the static analyzer ;)
> > There's nothing that prevents adding more error-detecting checks to clang-tidy.
>
>
> Wrt. to the checks being part of this patch I have some concerns:
>
> The first problem I see is that some functionlity is shared between the AST-based
> and path-sensitive checks. But I think this should be restricted to the `MPIFunctionClassifier` class.
If this class stays in the static analyzer, the clang-tidy check code could probably just depend on the relevant library and use this class?
> Another question I have is how this would affect the usability. At the moment
> all detected bugs (AST-based and path-sensitive) appear in a single report,
> generated by `scan-build`. Is there still a way to get the results in a single report
> if the checks get moved to `clang-tidy`?
clang-tidy can run static analyzer checks. However, it only supports the plain text output format, which is sub-optimal for representing the results of the path-based checks. So the single report scenario is not easy to implement right now. Gábor Horváth proposed a solution for this a few months ago (PList output for clang-tidy), but a proper implementation of this seemed to require some changes in the clang's diagnostic subsystem.
> Would the implementation need to change to AST-Matcher based?
That's not a 100% necessary step (you can always add a matcher for translationUnitDecl() and then traverse the AST using a RecursiveASTVisitor, for example), but this usually results in a more compact and easy to understand code.
> The point about the current implementation is that the AST-based checks
> are also already backed by a range of tests defined in
> `tools/clang/test/Analysis/MPIChecker.cpp`.
Clang-tidy checks should also be backed by tests ;)
http://reviews.llvm.org/D12761
More information about the cfe-commits
mailing list