Альтернатива StyleCop для Visual Studio?
Мне нравится StyleCop статический анализ кода и соблюдение правил. Однако в нескольких ключевых отделах этого недостаточно.
- Добавление новых правил официально не поддерживается и из-за того, что я слышу довольно сложно.
- Автоматическое "исправление" тривиальных нарушений правил было бы неплохо! Возможно, не с переменным именем, а с упорядочением порядка (статическим и т.д.) Это будет огромная экономия времени.
- Microsoft-подход "один размер подходит всем" для StyleCop является своего рода ограничительным. Я хотел бы иметь собственный набор правил для наших внутренних стандартов.
Есть ли такой коммерческий продукт?
alt text http://blogs.interakting.co.uk/images/blogs_interakting_co_uk/dominicz/WindowsLiveWriter/MicrosoftStyleCopSourcecodeanalysisforfo_D8EF/styleCopErrors_6.gif
Ответы
Ответ 1
Добавление правил будет, или будет, официально поддерживается:
Как и было обещано, мы также будем выпускать Документация SDK для StyleCop объяснение того, как создавать пользовательские правила и как интегрировать инструмент в настраиваемые среды сборки. SDK в настоящее время документация и мы надеемся выпустить его очень скоро. - JasonAll
С точки зрения нашего "внутреннего" стиля, я получил довольно близко, отключив несколько правил StyleCop:
- Заголовки файлов (SA1633-SA-1640)
- Кодовое упорядочение (SA1200-SA1202)
- Требование "this" (SA1101)
Вы можете сделать это глобально, изменив файл Settings.StyleCop в каталоге установки, хотя я взял подход к тому, чтобы поместить его в корень нашего исходного дерева в каждом проекте.
Конечный эффект - это то, что мы хотим. Есть несколько вариантов "внутри дома", которые было бы неплохо отметить, но даже без них StyleCop дает нам большую ценность.
Ответ 2
StyleCop для ReSharper может помочь (вам нужно будет купить ReSharper, но плагин бесплатный):
StyleCop для ReSharper теперь является функцией полный, то есть достиг паритет функции с StyleCop 4.3.
Существует 148 правил StyleCop.
- 38 из них должны быть исправлены вручную (обычно, поскольку вы должны вводить описательный текст или переименовать переменные).
- Из оставшихся 110 правил 58 фиксируются с помощью R # Code Cleanup (без звука режим).
- Из оставшихся 52 мы имеем правила очистки кода, которые фиксируют все их автоматически.
Мы также предоставляем 106 быстрых исправлений, которые обеспечить исправления контекстного меню за нарушения для 110 правил, которые может быть исправлено автоматически
Мы также отправляем "StyleCop дружественный файл настроек совместного доступа к файлам в стиле ReSharper", который настраивает ReSharper для автоматического форматирования кода в дружественном стиле StyleCop.
Ответ 3
Там Gendarme от Mono, хотя он с открытым исходным кодом, а не коммерческий.
Ответ 4
Agent Smith очень приятно. Для этого требуется Resharper.
Ответ 5
Альтернативой или хорошим дополнением к StyleCop будет использование коммерческого инструмента NDepend. С помощью этого инструмента можно написать правило кода над запросами LINQ (а именно CQLinq). Отказ от ответственности: я являюсь одним из разработчиков этого инструмента
По умолчанию предлагаются более 200 правил кода, включая дизайн, архитектуру, качество кода, эволюцию кода, соглашения об именах, код ошибки, Использование .NET Fx...
CQLinq предназначен для написания правил кода, которые могут быть проверены в прямом эфире в Visual Studio или могут быть проверяется во время процесса сборки и сообщается в отчете HTML/javascript.
Сила CQLinq над StyleCop или даже FxCop заключается в том, что просто написать правило кода и получить немедленные результаты. Предлагаются средства для просмотра согласованных элементов кода. Конкретно это выглядит так:
![CQLinq code rule]()
Ответ 6
Я часто пишу модульные тесты, чтобы отражать мои типы и проверять нарушения моих пользовательских правил.
Здесь пример проверки того, что определенные типы являются неизменяемыми: http://blogs.msdn.com/kevinpilchbisson/archive/2007/11/20/enforcing-immutability-in-code.aspx
Здесь другой, для правил о unit test именовании:
http://jbazuzicode.blogspot.com/2008/11/keeping-test-fixture-and-class-names.html
РЕДАКТИРОВАТЬ: Вторая ссылка, похоже, потеряна для песков времени.
Ответ 7
Посмотрите CodeIt.Right из подмассивы.