Задать вопрос

Clang как средство статического анализа: обработка только указанных файлов?

Ведется разработка средства статического анализа кода C++. Основная работа выполняется средствами Clang. Возникла следующая проблема: не удается понять, как заставить Clang (и наш пользовательский код) выдавать предупреждения и прочую информацию только относительно кода, написанного конечным пользователем, а не библиотечного. При этом ясно, что просто игнорировать include'ы нельзя — тогда не распарсить код, использующий имена, объявленные в соостветсвующих заголовочниках.
  • Вопрос задан
  • 4279 просмотров
Подписаться 3 Оценить Комментировать
Ответ пользователя FlexFerrum К ответам на вопрос (3)
@FlexFerrum
Всё зависит от того, какой именно механизм используется для получения диагностики от clang'а и выдачи этой диагностики пользователю. Если это делается на базе собственного DiagnosticRenderer'а, то там с каждым сообщением ассоциируется место в исходном тексте, для которого оно было выдано. Сравниваете имя файла, для которого было выдано сообщение, с имением обрабатываемого файла — и вуаля, если файл не текущий, ничего не выводите.
Если используется clang-c API, то можно воспользоваться методом clang_getDiagnosticSetFromTU, а потом фильтровать всё так же — по имени файла, для которого было выдано то или иное сообщение.
Ответ написан