<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Feb 23, 2014 at 11:50 AM, Robert Zimmermann <span dir="ltr"><<a href="mailto:tsett@gmx.net" target="_blank">tsett@gmx.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello,<br>
I wrote a small program for Windows using LibTooling to implement<br>
additional syntax-checking.<br>
For this I use a MatchFinder with several matchers and later I start<br>
ClangTool.run()<br>
Here a code example:<br>
<br>
ClangTool Tool(...);<br>
MatchFinder Finder;<br>
for (vector<BaseChecker*>::iterator iter = checkers->begin(); iter !=<br>
checkers->end(); iter++)<br>
{<br>
  BaseChecker* checker = *iter;<br>
  Finder.addMatcher(*checker->getMatcher(),<br>
static_cast<MatchFinder::MatchCallback*>(checker));<br>
}<br>
ret = Tool.run(newFrontendActionFactory(&Finder));<br>
<br>
If I run my tool on c++-code I got the problem that it do not find all<br>
the standard c++-header, but the rest of my matchers is working.<br>
I know that I could add the path to the FrontEnd.h, but then it will<br>
only work on systems with the same path.<br>
<br>
I also tried to add them via the -I switch, but I got a lot of errors in<br>
these files.<br>
<br>
The question is: Can I disable the standard compile-run (with a switch<br>
or in my code) and just create the AST and run the MatchFinder?<br></blockquote><div><br></div><div>Compilation is already disabled when you use ClangTool. The problem is that in C++ you need to know all available types at any point in the program to even construct an AST (as such, the AST is more a "semantic" tree than a syntactic one). Thus, you (unfortunately) need all headers.</div>
<div><br></div><div>The solution we have for this is to use a CompilationDatabase. As you're on Windows, and I've never looked into how well the CMake generated ones work there, I'd suggest to start with a FixedCompilationDatabase [1], and add the full set of -I flag the compiler would also see there.</div>
<div><br></div><div>[1] <a href="http://clang.llvm.org/doxygen/classclang_1_1tooling_1_1FixedCompilationDatabase.html">http://clang.llvm.org/doxygen/classclang_1_1tooling_1_1FixedCompilationDatabase.html</a></div><div><br>
</div><div>Hope that helps!</div><div>/Manuel</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
Best,<br>
Robert<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div></div>