[cfe-dev] Can I write a standalone static analyzer?

gao ge via cfe-dev cfe-dev at lists.llvm.org
Thu Dec 14 19:23:47 PST 2017


No, clang-tidy can not load clang plugin right now, but there is a tracking
issue, https://bugs.llvm.org//show_bug.cgi?id=32739.
Finally, after trade-off, writing checker as plugin is the best way for me.

Thank you very much.

On Fri, Dec 15, 2017 at 3:15 AM Artem Dergachev via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> I think what Matthew proposed is the best way to go. You can see
> examples/analyzer-plugin in clang source tree - it compiles to a clang
> plugin that you can load into existing clang binary in run-time with a
> flag, and you can write your domain-specific checkers this way without
> modifying clang directly.
>
> If you explicitly want a standalone tool like clang-tidy, then note that
> clang-tidy itself can run static analyzer checkers as well, including
> path-sensitive checkers as well. What i don't know, however, is whether
> you can load clang plugins from clang-tidy.
>
> On 12/12/2017 1:49 AM, Matthew Del Buono via cfe-dev wrote:
> > To further answer the question - I think meritozh may be saying "I
> > wish I could write checkers without modifying the clang source code"
> > to which the response is "you can!" You can compile your checker as a
> > clang plugin to a shared object file and then load that plugin. That
> > way there's no need to recompile clang, but you are still able to
> > write your own custom checkers.
> >
> > You need to implement the clang_registerCheckers function in your
> > plugin. See here:
> > https://clang.llvm.org/doxygen/CheckerRegistry_8h_source.html
> >
> > Does that answer your question?
> > -- Matthew P. Del Buono
> >
> > On Mon, Dec 11, 2017 at 11:27 PM, Alexey Knyshev via cfe-dev
> > <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>> wrote:
> >
> >     Hi meritozh!
> >
> >     CSA supports and encourage you to write custom opt-in checkers.
> >     Please explain what does mean "general purpose" statement and in
> >     which context you have to implement a new tool?
> >
> >     Thanks, Alexey K
> >
> >     2017-12-12 9:33 GMT+03:00 gao ge via cfe-dev
> >     <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>>:
> >
> >         Clang static analyzer is a great tool, but its checkers are
> >         only for general purpose. I want write some customized
> >         checkers. As I know, static analyzer is a port of clang,
> >         clang-tidy maybe a good choice, but it does not support path
> >         sensitive checker. It seems that I must modify clang source
> >         code? Can I write a standalone static analyzer which built on
> >         static analyzer module, but also support path sensitive checking?
> >
> >         Thanks,
> >         meritozh
> >
> >         _______________________________________________
> >         cfe-dev mailing list
> >         cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
> >         http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> >         <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
> >
> >
> >
> >
> >     --
> >     linkedin.com/profile
> >     <
> https://www.linkedin.com/profile/view?id=AAMAABn6oKQBDhBteiQnWsYm-S9yxT7wQkfWhSw
> >
> >
> >     github.com/alexeyknyshev <http://github.com/alexeyknyshev>
> >     bitbucket.org/alexeyknyshev <https://bitbucket.org/alexeyknyshev/>
> >
> >     _______________________________________________
> >     cfe-dev mailing list
> >     cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org>
> >     http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> >     <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev>
> >
> >
> >
> >
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20171215/0257c780/attachment.html>


More information about the cfe-dev mailing list