2016-12-17 2 views
1

Когда я запускаю инструмент статического анализа над моим кодовым, и я получаю результаты, как это:Работы с движением коды при сравнении статического анализа отчетов

... 
arch/powerpc/kernel/time.c:102:5: warning: symbol 'decrementer_max' was not declared. Should it be static? 
arch/powerpc/kernel/time.c:138:1: warning: symbol 'rtc_lock' was not declared. Should it be static? 
arch/powerpc/kernel/time.c:361:37: warning: implicit cast to nocast type 
... 

Я хочу, чтобы следить за количество предупреждений и где они находятся в коде, когда люди вносят изменения.

Я мог бы просто diff результаты статического анализа, но если кто-то вставляет какой-то код в time.c в строке 50, предупреждения, указанные выше, будут перемещаться, а поскольку номера строк изменены, diff скажет мне, изменилось.

Как мне сравнить их так, чтобы они касались перемещения кода внутри файла?

Googling для «умных различий» и т. Д. Не был продуктивным: они в основном умные различия кода, а не умные различия в журналах. Инструменты анализа журналов, такие как Greylog или Kibana, также кажутся плохими, разработаны больше для разного и более общего анализа, а не для этой довольно конкретной задачи.

Есть ли что-то очевидное, что мне не хватает? Или это проблема, когда я должен ожидать, что буду писать собственные инструменты?

+0

Чтобы иметь «умный дифференциал», он должен понимать структуру сообщений, так что можно сравнить различные части структуры разумно. Кто собирается создать такой инструмент для каждого отдельного инструмента статического анализа? –

+0

Из раздела [help/on-topic]: * Вопросы, предлагающие нам ** рекомендовать или найти книгу, инструмент, библиотеку программного обеспечения, учебник или другой ресурс вне сайта, не относятся к теме ** для переполнения стека, поскольку они, как правило, привлекают самоуверенные ответы и спам. * –

+0

Ира и Кен - я отредактировал вопрос, чтобы уточнить. – dja

ответ

0

У меня был переход с немного более простой настройкой - как предложил @ajd, разобрав сообщения и выполнив соответствие номера строки с нечувствительностью.

Код вверх на https://github.com/daxtens/smart-sparse-diff

1

Вы можете сохранить слияние кода и ошибок: вставить каждое сообщение об ошибке (минус его номер строки) после соответствующей строки кода. Затем, если кто-то вставляет код в строку 50, (обновленное) слияние не будет иметь разностей вокруг более поздних точек ошибки. Разумеется, у него будет различие в строке 50, которое может вас заинтересовать или нет. Если вам нравится, вы можете игнорировать diff-куски, в которых нет сообщения об ошибке (для чего вам понадобится какая-то отличительная маркер при каждом вставленном сообщении об ошибке).

+0

Хм, это интересная идея. Я отдам его на этой неделе. – dja

Смежные вопросы