[cfe-dev] Using clang-query on the whole project

Manuel Klimek klimek at google.com
Thu Jun 11 04:50:40 PDT 2015


On Thu, Jun 11, 2015 at 1:29 PM Jacob Carlborg <doob at me.com> wrote:

> On 2015-06-11 11:24, Kevin Funk wrote:
> > Heya,
> >
> > I've found clang-query to be useful to query single files. Matching the
> Clang
> > AST is easy enough and fast to learn. I don't see how to use clang-query
> on a
> > whole project, though, which would be super useful.
> >
> > A simple example where it's effectively useless: Assume some header
> "global.h"
> > containing "struct Global {};", every file in the project includes this
> header.
> >
> > Now the idiomatic way to run clang-query over all the files in the
> project:
> >    clang-query -p $BUILD $(find . -name "*.cpp")
> >
> > Let's try to find record decls named "Global":
> >    match recordDecl(hasName("Global"), isDefinition())
> >
> > => You get one match per file / translation unit. But in fact, this is
> not
> > really what you want. You want one match here.
> >
> > So of course this is difficult: clang-query is TU-centric, while for a
> whole
> > project you'd "somehow" want a global view over the source code and not
> have
> > duplicate results for a query like above.
> >
> > Questions:
> > - Is it possible to get clang-query to behave like that?
> >    - Any research/pointers in that regard?
> > - Is it possible to filter duplicates in the results without external
> tools?
>
> In theory it should be easy to modify clang-query to check the location
> of a declaration and only return declarations for unique locations.
>

Well, the problem is that a clang-query process is started for each TU, so
you'd need to somehow tell clang-query which results were in a completely
different process of clang-query. I don't think this is going to be easy or
worth it...


>
> --
> /Jacob Carlborg
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150611/bb432b94/attachment.html>


More information about the cfe-dev mailing list