<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Jun 11, 2015 at 1:29 PM Jacob Carlborg <<a href="mailto:doob@me.com">doob@me.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 2015-06-11 11:24, Kevin Funk wrote:<br>
> Heya,<br>
><br>
> I've found clang-query to be useful to query single files. Matching the Clang<br>
> AST is easy enough and fast to learn. I don't see how to use clang-query on a<br>
> whole project, though, which would be super useful.<br>
><br>
> A simple example where it's effectively useless: Assume some header "global.h"<br>
> containing "struct Global {};", every file in the project includes this header.<br>
><br>
> Now the idiomatic way to run clang-query over all the files in the project:<br>
>    clang-query -p $BUILD $(find . -name "*.cpp")<br>
><br>
> Let's try to find record decls named "Global":<br>
>    match recordDecl(hasName("Global"), isDefinition())<br>
><br>
> => You get one match per file / translation unit. But in fact, this is not<br>
> really what you want. You want one match here.<br>
><br>
> So of course this is difficult: clang-query is TU-centric, while for a whole<br>
> project you'd "somehow" want a global view over the source code and not have<br>
> duplicate results for a query like above.<br>
><br>
> Questions:<br>
> - Is it possible to get clang-query to behave like that?<br>
>    - Any research/pointers in that regard?<br>
> - Is it possible to filter duplicates in the results without external tools?<br>
<br>
In theory it should be easy to modify clang-query to check the location<br>
of a declaration and only return declarations for unique locations.<br></blockquote><div><br></div><div>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...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
--<br>
/Jacob Carlborg<br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>