我是一名学生,目前正在尝试使用cppcheck和frama-c分析C中OPC Ua协议的参考实现。我的目标不是进行非常专门的测试,而是进行一些常规/基础测试,以查看代码是否存在一些明显的问题。
可以找到该项目here
我正在使用Ubuntu 19.10和Frama-C版本20.0(Calcium)运行VM。
我执行的步骤如下:
git clone https://github.com/open62541/open62541.git
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 /path/to/source
frama-c -json-compilation-database /path/to/compile_commands.json
直到现在一切都按预期工作,并且没有错误。
但是现在我很难理解如何继续。我需要分别对所有文件进行分析还是可以像使用cppcheck一样投入整个项目?
我一般如何处理?我需要一步一步分析所有文件吗?
例如,我尝试过:
frama-c -json-compilation-database /path/to/compilation_commands.json -val /path/to/open62541/src/
返回:
[kernel] Parsing src (with preprocessing)
gcc: warning: /path/to/open62541/src/: linker input file unused because linking not done
[kernel] User Error: cannot find entry point `main'.
Please use option `-main' for specifying a valid entry point.
[kernel] Frama-C aborted: invalid user input.
因此,frama-c显然需要一个入口点,但是我不知道我需要指定哪个入口点。
非常感谢您提供任何帮助。抱歉,我不了解。这是我的第一个此类项目,而frama-c和open62541项目的复杂性让我有点不知所措。
我需要分别对所有文件进行分析还是可以像使用cppcheck一样投入整个项目?