2012-01-10 4 views
5

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

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

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

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

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

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

+0

Вы ищете бесплатные инструменты? – kosa

+0

ах да, я забыл упомянуть об этом: он должен быть бесплатным. Не обязательно быть совершенным, но должен быть свободным. –

ответ

3

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

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

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

+0

ah wish Я мог бы получить все/любую экипировку, о которой вы говорите :) На данный момент я должен выполнить ежедневную сборку с плагином отсечения. Лучше, чем ничего, я думаю. –

+0

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

0

Есть также такие инструменты для статического анализа, как:

  1. PMD
  2. Checkstyle
  3. FindBugs

высокие шансы, что вы найдете ее полезной альтернативой для Sonar.

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

+0

Да, мы использовали все 3 ранее, но переключились на сонар, который теперь выполняет всю работу. Также как CI мы используем Hudson. –

+0

Тогда, может быть, вам просто нужно уменьшить количество проверок? – altern

+0

Да, я уже сделал 2 улучшения: во-первых, я не запускаю отдельную работу сонара в hudson, которая сначала построила бы весь CI-стиль приложения, а затем снова сделала это для сонара, но я начну строить сонар сразу после того, как один из КА. Тогда мне не нужно запускать тесты, и я анализирую только изменения латтестов. Все это сейчас составляет около 10 минут, и я думаю, что «Илл» получит еще лучший результат. –

0

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

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

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