Как затянуть качественный храповик с помощью КИ - PullRequest
3 голосов
/ 16 сентября 2011

Моя команда работает над непрерывной интеграцией, работая со всеми нашими проектами.Прямо сейчас у нас есть CruiseControl, строящий все проекты, что ... хорошо, но на самом деле не так уж важно.Я вижу гораздо больше отдачи от нашего доллара от NUnit, StyleCop и Code Analysis / Resharper.

Но вот что я думаю ... поэтому я включаю StyleCop для проекта, и у него есть семьнарушения хожиллиона.И будет семь нарушений, пока они все не исправят.А пока у меня просто сломанная сборка?Неужели это не может затенить гораздо более важные прерыватели сборки?

Мне кажется, что было бы идеально, если бы был затяжной трещотка на основе проекта ... Клиент А - совершенно новый, так что каждое правило, которое мы имеем,включен и нарушает сборку.Клиент B унаследован, поэтому его нарушения вызывают только предупреждения, и мы надеемся, что в какой-то момент мы сможем усилить его храповик, как Клиент A.

Существует ли эта концепция в CI?Как мне лучше всего это реализовать?

Ответы [ 3 ]

3 голосов
/ 16 сентября 2011

Я не играл с StyleCop, но с помощью FxCop (другого инструмента анализа от Microsoft) мы создаем два разных набора правил: один используется для сбоя сборки, а другой - нет. Тот, который не дает сборки, является относительно небольшим набором правил (неиспользуемый код, нераспределенные поля и т. Д.). Тот, который не терпит неудачу при сборке, имеет такие вещи, как орфография и регистр - элементы, которые недостаточно важны для исправления сейчас (или У меня так много нарушений, что на их устранение уйдет целая вечность.)

Когда сборка выполняется, она вызывает FxCop дважды, один раз для каждого набора правил. Поскольку мы используем msbuild для запуска наших инструментов, мы устанавливаем флаг "FailOnError" в false для нашего набора предупреждений. Это позволяет нам увидеть результаты, но ccnet не подведет сборку, независимо от того, сколько нарушений у нас может быть.

3 голосов
/ 16 сентября 2011

Одна из важных вещей, на которых мы фокусируемся, - «нет новых нарушений». Итак, у нас есть инструмент для сборки (AnthillPro) , предупреждающий нас о новых нарушениях. Я не уверен, что CC.Net сделает это из коробки, но вы, вероятно, можете поиграть в некоторые игры для сравнения XML, чтобы получить эту информацию.

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

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

2 голосов
/ 16 сентября 2011

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

Хотя может показаться, что у него фокус на Java, Jenkins отлично подходит для проектов .NET и имеет множество плагинов, которые могут анализировать, например, отчеты XML Stylecop.

...