Scan-build discusses in an earlier post is pretty effective at detecting issues within a single C file. Additional insights can be gained by applying cross-translation-unit analysis. This post will discuss how to install and use CodeChecker.
Prerequisites
Running build of OpenJDK. Clang tools v10 installed as discussed in the previous post.
Set up clang
By default clang v10 is only available as "clang-10" and not as "clang". This can be corrected using update-alternatives script:
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 81 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-10
sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-10 81
Install pip
Required to install CodeChecker
sudo apt install python3-pip
Install CodeChecker
pip3 install codechecker
Generate compilation database
CodeChecker log --build "make" --output ./compile_commands_ori.json
sed "s/-fno-lifetime-dse //" compile_commands_ori.json >compile_commands.json
Run analysis
CodeChecker analyze --ctu compile_commands.json -o reports
Limiting the number of worker processes (with -j2) may be necessary; some processes consumed 6G of memory.
Results
None so far; the process takes ages to complete. Will try again on a more powerful machine.
Sources
https://askubuntu.com/a/1187858