Я студент и в настоящее время пытаюсь проанализировать эталонную реализацию протокола OP C Ua в C с помощью cppcheck и frama- c. Моя цель не в том, чтобы проводить очень специализированное тестирование, а в более общих / базовых c тестах, чтобы увидеть, есть ли некоторые очевидные проблемы с кодом.
Проект можно найти здесь
Я использую виртуальную машину с Ubuntu 19.10 и Frama- C версии 20.0 (Calcium).
Я выполнил следующие шаги:
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.