2013-09-29 6 views
4

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

Однако в руководстве по sonarqube указано, что есть сонар . свойство для установки списка файлов для запуска анализа. Поэтому я думал о запуске анализа файлов, которые были изменены/изменены как крюк с предварительной фиксацией и не удалось выполнить фиксацию в случае добавления слишком большого количества вопросов.

Как я понял, можно получить список измененных и добавленных файлов через svnlook; существует также возможность указывать анализатор сонара на конкретный файл .properties (скажем, файл, указывающий на конфигурацию, которая имеет только правила кодирования и циклическую сложность и метрики LCOM4).

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

Заранее благодарен.

ответ

3

Однако я не понимаю, как получить результат анализа сонара в сценарии привязки до фиксации и предоставить, скажем, ссылку на результат анализа. Возможно ли это?

От pre-commit, no. По крайней мере, если вы хотите, чтобы ваша фиксация завершилась. Если pre-commit возвращает что-либо клиенту, фиксация отклоняется.

Предварительная фиксация должна использоваться только для проверки фиксации для проверки того, что требования выполнены - проверьте, что сообщение фиксации было предоставлено, если вы интегрируетесь с отслеживателем ошибок, убедитесь, что введен правильный идентификатор ошибки , возможно, проверите некоторые проверки безопасности, с которыми не может справиться встроенная авторизация на основе пути.

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

Для вашего использования может работать крюк после фиксации (за исключением того, что он не может отправить отзыв клиенту, поэтому вы не сможете указать URL-адрес), но лучшим решением будет использование непрерывного сервер интеграции. Этот инструмент будет контролировать репозиторий для изменений и выполнять действия, которые вы укажете ему каждый раз, когда происходит квалифицируемое совершение. Используйте эту систему для выполнения своих проверок и отправьте электронное письмо с результатами.

+0

Действительно, интеграция в процесс CI - хорошая идея; однако, я хотел, чтобы система, которая не могла совершить ошибку из-за соблюдения правил кодирования.Итак, в основном, если анализ не достиг определенного порога - мне ничего не нужно возвращать; однако, если, скажем, есть 3 важных вопроса в совершенном коде, я хотел бы пропустить фиксацию и связать коммиттера с страницей с результатами. Я знаю, что эти сценарии должны быть легкими; если они откажутся от этого критерия - хорошо, но я хочу знать, возможно ли вообще реализовать такое поведение. – jiallombardo

0

Я не знаю, жив ли этот поток, но работает над подобной ситуацией и, следовательно, отвечает.

Issues Report plugin позволяет генерировать html, который затем может быть проанализирован (отдельный процесс - я использую скрипт оболочки и регулярное выражение как часть задания jenkins), чтобы определить, были ли сообщения о новых проблемах, и если да, вернуть сбой.