Инструмент для поэтапного статического анализа кода? - PullRequest
5 голосов
/ 10 января 2012

Существуют ли бесплатные инструменты, позволяющие проводить поэтапный статический анализ кода (для SVN и предпочтительно для Git)?В настоящее время мы используем Sonar (я думаю, что 2.12), но проблема в том, сколько времени нужно для анализа всего кода в нашем проекте, а это 40-60 минут.И нам нужно умножить его, так как у нас есть несколько веток, работающих над разными подпроектами.

Именно поэтому я ищу инструмент, который мог бы анализировать код только из последнего коммита (который, насколько мне известно, Sonar не делаетподдержка) или только код, который был изменен за последние X часов / дней / что угодно.

Я нашел плагин Cutoff для сонара, который якобы делает то, что я хочу (проверяет только код из файла, которыйбыли изменены после определенной даты), но:

  1. Мне все еще нужно проверить, работает ли он
  2. , проверить, поддерживает ли он динамические изменения даты (поэтому он будет учитывать только кодто есть с последнего дня, а не с того, что мне пришлось бы менять дату исключения вручную ежедневно).
  3. это, похоже, не поддерживается (последнее изменение в 2010 году, и оно все еще в версии 0.1)

Было бы идеально, если бы он проверял код только из последнего коммита, но я нигде этого не видел.

Также как побочный квестion: хорошо ли проводить анализ после каждого коммита (т. е. использовать плагин hudson sonar) или его следует избегать?В моей последней команде мы запустили гидролокатор таким образом, и мы получили бы мгновенное электронное письмо, если бы мы «сломали его» (добавили основные / критические к коду).Это было очень удобно, так как мы знали, кто был виноват (основываясь на информации из коммита).Или мы должны вместо этого анализировать это реже (скажем, раз в неделю)?В этом случае я должен был бы проверить, сможет ли Сонар сказать, кто совершил проблемный код.

Ответы [ 3 ]

3 голосов
/ 19 января 2012

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

Чтобы ускорить статический анализ, подумайте о приобретении диска памяти или SSD для хранения источников и двоичных файлов.Используйте многоядерный компьютер, располагайте достаточным объемом памяти и по возможности запускайте версию этих инструментов для x64.Многие из этих инструментов сначала вводятся / выводятся, а затем ограничиваются процессором.Большинство улучшений можно найти, уменьшив задержку и пропускную способность системы, а также объем перестановки, необходимый (при наличии достаточного объема памяти) для дальнейшего уменьшения количества операций ввода-вывода.

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

0 голосов
/ 06 мая 2017

Я понимаю, что опаздываю на вечеринку, но есть еще один инструмент, который может быть вам полезен: Teamscale

Teamscale подключается к вашему хранилищу (например, Git или SVN)анализирует ваш код постепенно, сразу после каждого коммита.При этом вы получаете отзывы о новых / исправленных проблемах с кодом практически сразу после фиксации.Вы также можете увидеть полную историю вашего кода, черный список ложных срабатываний и многое другое.(Полное раскрытие: я разработчик Teamscale)

0 голосов
/ 19 января 2012

Существуют также такие инструменты для статического анализа, как:

  1. PMD
  2. Checkstyle
  3. FindBugs

С большой вероятностью вы найдете его полезной альтернативой для сонара.

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

...