2013-10-25 9 views
0

Мы используем Klocwork 9.6 для анализа статического кода.
Для выполнения анализа мы используем команду командной строки «kwcheck»
Есть некоторые ошибки, которые мы просто хотим отфильтровать.
напримерKlocwork 9.6 игнорировать определенные шашки только в указанных файлах

(Local) *.cpp:134 UNINIT.STACK.ARRAY.MIGHT (1:Critical) Analyze 
'FRUSerial' array elements might be used uninitialized in this function. 

(Local) *.cpp:187 INFINITE_LOOP.LOCAL (2:Error) Analyze 
Infinite loop 

Это должно быть достигнуто с помощью функциональности Klocwork не с обработкой вывода пост.

Есть ли для этого подходящие команды/переключатели Klocwork?

ответ

1

Вы можете использовать команду kwcheck set-status, чтобы изменить status дефекта с помощью Анализа, чтобы игнорировать или не проблема. Например, для дефекта перечислены ниже:

1 (Local) foo.cpp:134 UNINIT.STACK.ARRAY.MIGHT (1:Critical) Analyze 
'FRUSerial' array elements might be used uninitialized in this function. 

2 (Local) foo.cpp:187 INFINITE_LOOP.LOCAL (2:Error) Analyze 
Infinite loop 

Число в передней части каждого выпуска выше является идентификатором дефекта, так как выход из kwcheck run или kwcheck list. Таким образом, чтобы привести второй дефект и установить статус игнорировать с комментарием, вы должны запускать:

kwcheck set-status 2 --status ignore -c "we want to ignore this" 

Обратите внимание, что по умолчанию kwcheck list отображает только дефекты со статусом Анализировать или Фикс, поэтому, установив статус одного из этих других значений дефекты больше не будут отображаться. Если вы хотите просмотреть список дефектов с определенным статусом, например те, которые вы указали в «Игнорировать», вы можете использовать опцию -s или --status с kwcheck list, чтобы указать, какие статусы (ы) для отображения.

Если вы хотите полностью отключить определенные шашки, вы можете отключить их, используя команду kwcheck disable. Это требует, чтобы вы создали локальный проект для анализа с помощью команды kwcheck create. Вы можете создать локальный проект, даже в качестве временного артефакта, чтобы настроить и контролировать локальный анализ и результаты. Не требуется подключать его к проекту на сервере Klocwork. Например:

Создание локального проекта:

kwcheck create 

Отключить шашек для дефектов вы не хотите видеть:

kwcheck disable UNINIT.STACK.ARRAY.MIGHT INFINITE_LOOP.LOCAL 

Выполнить анализ:

kwcheck run -b buildspec.out 
+0

Может эта функция используется для игнорирования одного предупреждения только в определенном файле? после нашего анализа нет .kwlp-каталога. –

+0

Почему нет каталога .kwlp? Вы указали другое имя? Или вы используете kwcheck только для определенных файлов? Можете ли вы предоставить команду kwcheck, которую вы используете? Создавая локальный проект, у вас есть намного больше контроля над анализом, а также возможность включать или отключать определенные шашки и ссылаться на дефекты, как я показал выше. – nonesuchnick

+0

Я только что проверил скрипт, который запускает kwcheck - мы вручную удаляем каталог .kwlp сразу после поколения, но я не знаю почему. во всяком случае, я вижу, что ваша команда disable указывает kw ничего не сообщать об этой ошибке - и мы не можем этого сделать, нам нужно только отключить эти предупреждения в файлах, где мы рассмотрели предупреждение и явно сказали «это ложь!». , Я не думаю, что kw 9.6 способен это сделать. –