Как отключить предупреждение CodeSonar в C++
Название говорит само за себя... У меня есть проект, который нужно очистить от MISRA 2004, и компании сказали, что CodeSonar - хороший инструмент для статического анализа.
В других инструментах статического анализа вы можете добавить волшебный комментарий, чтобы отключить анализ следующей строки \ блока кода (PC-Lint - это //lint -esym(42)
, CStat использует #pragma cstat_suppress="MISRAC++2008-6-4-1"
), но у CodeSonar, похоже, нет эквивалента - скажите, пожалуйста, я ошибаюсь!
Я видел упоминание о // NOSONAR
но это не работает на CodeSonar 5.1
(Я быстро прихожу к выводу, что CS - это куча мусора, написанная людьми, которые никогда не программировали в реальном мире с SVN и несколькими программистами, где отключение предупреждений в причудливом пользовательском интерфейсе идет вниз, когда вы объединяете ветки в ствол и все номера строк изменятся.)
2 ответа
Начиная с CodeSonar 4.0.0, в WARNING_FILTER
: line_content
что позволяет добавить "волшебный комментарий".
Добавьте следующую строку в свой proj_name.conf:
WARNING_FILTER += line_contents:"NOLINT"
Это отключит предупреждения для строки, заканчивающейся на // NOLINT
Ознакомьтесь с документацией и примерами для переменной конфигурации WARNING_FILTER
.
CodeSonar не предоставляет готовых // NOSONAR
в любой версии. Однако одна из доступных форм правил дляWARNING_FILTER
позволит вам реализовать его для себя, если вы решите принять такой подход.
Если вам нужно подавить конкретное предупреждение, вы сможете напрямую аннотировать это предупреждение. Сигнатуры, которые используются для сопоставления "одного и того же" предупреждения между анализами, не зависят от номера строки или других функций кода, которые с большой вероятностью могут измениться.