Я хотел узнать, реализована ли в файле cpp определенная функция.
Например, если a() присутствует в файле cpp. Как написать правило для этого? Я хочу, чтобы он выдавал исключение, если его нет.
Я хотел узнать, реализована ли в файле cpp определенная функция.
Например, если a() присутствует в файле cpp. Как написать правило для этого? Я хочу, чтобы он выдавал исключение, если его нет.
инструменты статического анализа кода не используются для поиска ошибок компиляции или компоновки.
Если функция или метод 'a' не объявлены и не определены, компилятор или компоновщик сообщит вам об этом - вы получите сообщение об ошибке.
a
нигде не определено, возможно, OP хочет убедиться, что функция определена в одном конкретном исходном файле
- person 463035818_is_not_a_number; 18.12.2018
main()
, который объявляет и вызывает a()
, не определяя его, а другой требуется для его определения. Сборка этой цели будет успешной только в том случае, если требуемый исходный файл реализует эту функцию. При необходимости повторите для всех таких функций и файлов, необходимых для их реализации. Затем создайте фиктивную цель сборки, которая зависит от всех остальных....
- person Peter; 18.12.2018
Если CppCheck не может обнаружить такую проверку, вы можете попробовать CppDepend и его язык запросов кода CQLinq для создания ваши пользовательские правила.
from file in Files where file.ChildMethods.Where(m=>m.Name=="a").Count()==0 select file
Я разработчик Cppcheck.
Cppcheck имеет «правила» и «дополнения». «Правило» выполняется с помощью «--rule». Насколько я вижу, с помощью «правила» вы не можете это проверить.
С «аддоном» вы определенно можете реализовать это. Хорошим началом будет просмотр списка областей действия. Если вы видите область действия для "a()", вы можете увидеть, где находится тело области.
Вы можете прочитать больше об аддонах в руководстве cppcheck. http://cppcheck.sourceforge.net/manual.pdf
Глава 12.