Cross translational unit analysis in codechecker

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Cross translational unit analysis in codechecker

David Chisnall via cfe-dev
Hi,
can anyone tell how to use codechecker https://github.com/Ericsson/codechecker with cross translational unit analysis flag for analysis across translational unit ?
Thanks,
Siddharth

_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Cross translational unit analysis in codechecker

David Chisnall via cfe-dev

Hi Siddharth,

 

since the CTU functionality is not yet part of the mainline clang (review ongoing), you will need to clone our patched version of clang5

https://github.com/Ericsson/clang

(ctu-clang5 branch)

 

please use the following llvm commit revision to compile clang:

Branch ctu-clang5 -> LLVM commit 657c31173ea30090583e40c7a9204561d9c2d8c4

 

when you compiled clang successfully you should have a “clang-func-mapping” binary in the <build_dir>/bin directory.

 

Then create a codechecker package as described here

https://github.com/Ericsson/codechecker#linux

 

Add <LLVM_BUILD_DIR>/bin to your path e.g.: export PATH=<LLVM_BUILD_DIR>/bin:$PATH

so CodeChecker will find this new CTU patched version of clang.

 

If all went fine you start CodeChecker analyze –help and it will print:

 

cross translation unit analysis arguments:

  These arguments are only available if the Clang Static Analyzer supports

  Cross-TU analysis. By default, no CTU analysis is ran when 'CodeChecker

  analyze' is called.

 

  --ctu, --ctu-all      Perform Cross Translation Unit (CTU) analysis, both

                        'collect' and 'analyze' phases. In this mode, the

                        extra files created by 'collect' are cleaned up after

                        the analysis.

  --ctu-collect         Perform the first, 'collect' phase of Cross-TU

                        analysis. This phase generates extra files needed by

                        CTU analysis, and puts them into '<OUTPUT_DIR>/ctu-

                        dir'. NOTE: If this argument is present, CodeChecker

                        will NOT execute the analyzers!

  --ctu-analyze         Perform the second, 'analyze' phase of Cross-TU

                        analysis, using already available extra files in

                        '<OUTPUT_DIR>/ctu-dir'. (These files will not be

                        cleaned up in this mode.)

  --ctu-on-the-fly      If specified, the 'collect' phase will not create the

                        extra AST dumps, but rather analysis will be ran with

                        an in-memory recompilation of the source files.

 

Then you can say to analyze your code:

CodeChecker log -b “make” -o compilation.json

CodeChecker analyze compilation.json –ctu-all -o reports

then print the reports

CodeChecker parse ./reports

 

(For more howto see: https://github.com/Ericsson/codechecker/blob/master/docs/usage.md)

 

I hope this helps.

 

Regards,

Daniel

 

 

From: cfe-dev [mailto:[hidden email]] On Behalf Of Siddharth Shankar Swain via cfe-dev
Sent: 2017. szeptember 20. 16:17
To: Clang Dev <[hidden email]>
Subject: [cfe-dev] Cross translational unit analysis in codechecker

 

Hi,

can anyone tell how to use codechecker https://github.com/Ericsson/codechecker with cross translational unit analysis flag for analysis across translational unit ?

Thanks,

Siddharth


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev