Статический анализатор Clang и непрерывная интеграция?

Статический анализатор Clang оказался гораздо более надежным, чем PC-Lint и другие варианты Lint и аналогичное программное обеспечение, в выявлении реальных проблем (что неудивительно, если читать предысторию). Метод scan-build хорош даже для автоматических сборок, но ему не хватает одной важной функции, о которой я не нашел никакой информации. Как я могу понять, ухудшил ли последний коммит общее качество кода или нет?! Я должен был бы сравнить количество ошибок с предыдущим запуском, конечно. Но синтаксический анализ HTML (также учитывая псевдослучайную схему именования) кажется довольно странным.

Какие существуют способы добиться осмысленной интеграции статического анализатора в таком сценарии?

Примечание: просто запуск ccc-analyzer здесь также не имеет особого смысла. Хотя в этом случае вывод будет только текстовым (т. е. не HTML) и, следовательно, его будет легче анализировать. Но я открыт для предложений, даже если они предполагают выполнение ccc-analyzer для отдельных файлов вместо scan-build для всего make процесса.


person 0xC0000022L    schedule 15.08.2012    source источник


Ответы (1)


Вы упоминаете, что используете непрерывную интеграцию, но не указываете, какую платформу используете. Я думаю, что то, что вы ищете, должно быть в отчетах платформ. Большинство платформ CI отслеживают ряд ключевых показателей для создания отчетов и графиков. Если вы выяснили, как работает ваша система, вы должны быть в состоянии отслеживать количество ошибок в каждой сборке, а затем ваши графики должны давать простую визуальную подсказку к числам, увеличивающимся с течением времени. Или, возможно, вы могли бы использовать API вашей платформы, чтобы определить, выше ли значение в текущей сборке, чем значение в последней сборке.

person Alex    schedule 27.11.2012
comment
Если под платформой вы подразумеваете ОС: Windows и Linux, для начала будет достаточно как 32-битной, так и 64-битной версии x86. В настоящее время система CI является частной собственностью. Так что в принципе все идет ;) - person 0xC0000022L; 28.11.2012
comment
Нет, я имел в виду платформу CI. В большинстве систем уже есть механизмы для сбора статистики с течением времени. Вся идея заключается в том, что при каждой сборке, которую вы запускаете, Clang извлекает количество ошибок и сохраняет это значение как артефакт сборки, чтобы вы могли графически отображать изменения с течением времени... или что-то еще. В некоторых системах (Jenkins) даже есть механизмы, в которых, если значения увеличиваются или пересекают определенные пороговые значения, вы можете не выполнить текущую сборку. - person Alex; 28.11.2012