[cfe-dev] running analysis across translation units

Gábor Horváth via cfe-dev cfe-dev at lists.llvm.org
Wed Jun 5 05:31:32 PDT 2019


Hi Aaron,

The CTU functionality is kind of there but we lack good support for driver
scripts to actually drive the analysis. The scan-build-py has some support
but is poorly maintained at the point. The most mature solution is in
CodeChecker [1]. Most of the problems with CTU analysis coming from the
ASTImporter. Ericsson also has some ASTImporter patches downstream that are
being upstreamed gradually. So if you want the best possible result, you
could try their fork [2]. It should work reasonably well for most projects
(last time I checked it was able to analyze more than 99% of LLVM and Clang
sources with CTU enabled).

Regards,
Gabor

[1]:
https://github.com/Ericsson/codechecker/blob/master/docs/analyzer/user_guide.md#ctu
[2]: https://github.com/Ericsson/clang

On Mon, 27 May 2019 at 04:06, Ella Oikawa via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> Hi Aaron,
>
> According to my investigation, you can enable CTU analysis with
> `experimental-enable-naive-ctu-analysis=true` and `ctu-dir` parameters when
> executing clang.
> And before your analysis, you should create the external definition
> mapping file with `clang-extdef-mapping` or `clang-func-mapping` (depending
> on your clang's version, see clang/tools/).
> With the mapping file, CTU analysis can find the desired FunctionDecls
> outside current TU when CTU analysis is enabled.
>
> An example of invoking clang with CTU analysis enabled:
> ```
> $ clang++ -cc1 -analyze -analyzer-checker=YOUR_REQUIRED_CHECKERS -o
> OUTPUT_DIRECTORY/
> -analyzer-config experimental-enable-naive-ctu-analysis=true
> -analyzer-config ctu-dir=PATH_TO_FIND_MAPPING_FILE/ FILE_TO_BE_ANALYZED.cpp
> ```
>
> The latest version of CTU analysis is now under merging, hope there will
> be some official documents someday.
>
> Hope this helps.
>
> Regards,
> Ella
>
> AAA C via cfe-dev <cfe-dev at lists.llvm.org> 于2019年5月26日周日 下午2:36写道:
>
>> Hello,
>>
>> Is there a way to analyze multiple translation units / files using clang?
>> I'm trying to implement a simple analysis to match up each function call to
>> its potential FunctionDecls, where the decls might be defined in multiple
>> files.
>>
>> Thanks,
>> Aaron
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://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/20190605/d0be744a/attachment.html>


More information about the cfe-dev mailing list