Как обеспечить единый стандарт кодирования в .NET с поддержкой инструментов

14

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

Некоторые делают это с помощью тяжелого парного программирования, другие поддерживают список стандартов кодирования и проводят ручной обзор. Другие даже используют инструмент статического анализа кода из Visual Studio, чтобы обеспечить соблюдение стандартов кодирования.

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

Стефан Папп
источник

Ответы:

15

StyleCop (теперь также StyleCop для Resharper) обычно используется для реализации правил стиля кодирования в базах кода C #.

Он может быть интегрирован в вашу сборку CI и вызывать сбои сборки, если были допущены какие-либо нарушения.

Одед
источник
Есть еще информация о том, как его использовать? Я хотел бы запускать проверку стиля перед каждым коммитом. Так что мне нужно кли для этого. Есть ли. Я не мог найти соответствующую информацию.
FreeLightman
1
Это может помочь blog.submain.com/stylecop-detailed-guide
z-boss
@Р. - если бы только один мог настроить правила StyleCop. Ой, подождите ...
Одед
@Р. - Вы также можете написать свои собственные правила.
Одед
FWIW из readme на github: «Несмотря на то, что запросы на получение по-прежнему будут приниматься, маловероятно, что какие-либо важные разработки будут выполнены в этом проекте. Все труднее и неэффективно поддерживать собственный анализатор C #, используемый StyleCop».
ржавый
6

Во-первых, убедитесь, что у вас есть правильный сервер сборки, который непрерывно собирает ваш код. TFS или Jenkins / Hudson + Msbuild - хорошие варианты. На этом сервере сборки вы, конечно, запускаете тесты, а также можете выполнять статический анализ кода и проверку синтаксиса.

Я рекомендую использовать FxCop или Gendarme для статического анализа кода. Оба могут быть использованы рядом.

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

Эмпирические правила:

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

  • Если у вас есть определенные для домена правила, которых вы должны придерживаться, не бойтесь применять свои собственные правила.

Для проверки синтаксиса используйте StyleCop или StyleCop для Resharper, если вы используете Resharper (что я также настоятельно рекомендую).

Андерс Форсгрен
источник
2

StyleCop и FxCop - мои легковесные инструменты, которые напоминают стили кода моим разработчикам. Решарпер тоже хорош, но делает VS очень медленным.

Я рекомендую FxCop из-за его богатой библиотеки правил, с отличной документацией, классификациями, примерами и многими другими функциями.

Также доступно расширение StyleCop Fixer для visual studio, которое помогает исправлять обычные ошибки.

На метрики кода также иногда влияют стили кода. С помощью этого инструмента вы можете отслеживать ремонтопригодность кодов.

Реза Owliaei
источник
2

Я хотел бы подчеркнуть, что сначала должен работать уже упомянутый автоматический анализ кода (FxCop, StyleCopy, сборки CI и т. Д.), А не ручные обзоры. Автоматические проверки обнаружат гораздо больше вещей, чем ручная проверка, и, как правило, гораздо более строгие, последовательные и самодокументируемые. Ручные обзоры могут быть полезны для более высокого уровня проектных решений и т. Д., Но по моему опыту они могут быть очень субъективными и случайными.

Polyfun
источник
0

NDepend можно использовать для реализации различных стандартов кодирования в .NET Code Base. Он имеет около 200 правил кода по умолчанию, которые можно просмотреть здесь . Также легко настроить существующие правила или создать свои собственные правила, поскольку с помощью NDepend правило является просто запросом C # LINQ .

Отказ от ответственности: я работаю на NDepend

Патрик Смаккья - NDepend dev
источник