Наш инструмент с именем CodeSonar - это коммерческий расширенный инструмент статического анализа для программ на C / C ++.Он предлагает несколько API, которые можно использовать для расширения его функциональности.Обратите внимание, что он предназначен для выполнения анализа, а не для выполнения программных преобразований.
Существуют API (как на C, так и на Схеме), которые обеспечивают доступ к AST программы (которые содержат таблицы символов), CFG для каждой подпрограммы., граф вызовов всей программы, блоки компиляции, включаемые файлы и т. д. Все эти представления перекрестно связаны с информацией о положении, поэтому можно вернуться к строке ответственного кода.
Механизм анализапосещает все эти структуры данных, и пользователь может написать средство проверки, указав обратный вызов, который будет вызываться во время посещения.
CodeSonar - это инструмент анализа с учетом пути.Исследование пути сложно, потому что некоторые пути неосуществимы, и исключение их из рассмотрения требует определенных усилий.Важно исключить невозможные пути, чтобы ложные срабатывания оставались на низком уровне.CodeSonar позволяет пользователям подключаться к своему исследованию пути, снова используя шаблон посетителя, который позволяет им писать чувствительные к пути средства проверки без необходимости самостоятельно выполнять исследование допустимого пути.
Этот механизм был использован для реализации средства проверкикоторый находит отклонения от довольно сложной идиомы отчетности об ошибках.
Другой способ написания чеков - использовать другой специализированный API, цель которого не в том, чтобы его выполнять, а в том, чтобы обучить механизм анализа свойствам программы.,Грубо говоря, вы можете использовать этот API для написания кода, который похож на тот, который вы написали бы для динамической проверки свойства, но который вместо этого «интерпретируется» символическим механизмом выполнения.Вы можете украсить свой собственный код вызовами этого API или оставить все это в стороне.
Многие из встроенных контроллеров CodeSonar для использования API определены именно таким образом.
Записьчеки это только полделаПосле того, как у вас есть средство проверки, вам нужен способ управлять тем, что он находит.Все описанные выше механизмы генерируют отчеты, которые заполняют базу данных, и есть пользовательский интерфейс на основе веб-клиента для просмотра результатов, добавления заметок, интеграции с другими инструментами и т. Д.
Надеюсь, это поможет!