我使用Coverity来分析代码C。
配置命令:
cov-configure --compiler /opt/toolchains/stbgcc-4.5.4-2.9/bin/mipsel-linux-uclibc-gcc --comptype gcc --config /opt/cov-analysis-linux64-7.5.1/config/coverity_config.xml
配置步骤成功。
构建命令:
cov-build --dir ../platform/drivers --record-only --encoding EUC-KR sudo make platform FORCE=1
当 coverity 构建完成后, 我在构建日志中看到:cov-build 实用程序成功完成。 弹出 block 中的警告:
the build capture percentage is undesirably 0%
然后我仍然分析数据:
分析命令:
cov-analyze --user-model-file >~/work/CoverityData/stdioUserModel.xmldb --parse-warnings-config >~/work/CoverityData/parse_warnings.conf --dir ../platform/drivers/ >--all --checker-option NO_EFFECT:extra_comma:0 -j 4
我得到了错误:
Error: intermediate directory contains no translation units.
我猜构建步骤中的警告导致了分析步骤中的错误。
请帮我解决这个问题。
最佳答案
问题可能出在您的 cov-build
调用的 --record-only
部分 - 它捕获编译器调用,但实际上并不发出它们。尝试删除它并重试。或者,您可以使用 cov-build --replay -j X 来重播这些编译;有一些注意事项适用,通常最好直接捕获编译。
请注意,在构建命令中使用 sudo
非常危险,应该避免。真的有必要吗?
关于覆盖率:构建捕获百分比为 0%,这是不合需要的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374323/