Stylecop против FXcop

Stylecop вытеснил FXcop? Какой продукт мы должны использовать с Visual Studio 2008?

5 ответов

Решение

Stylecop - это инструмент для анализа стилей, который работает на уровне исходного кода. Он существует главным образом для обеспечения единого общего стиля, который могут использоваться управляемыми проектами для обеспечения согласованности в большом мире управляемого программного обеспечения. Он принимает решения, касающиеся стиля, прежде всего, чтобы избежать священных войн (в конце концов, стиль почти всегда является субъективной вещью). Я не думаю, что когда-либо встречал кого-то, кому нравились все правила StyleCop, но это нормально. Это означает, что StyleCop, как правило, является хорошим компромиссом среди обширного набора существующих стилевых рекомендаций. (Если бы правила stylecop были в высшей степени настраиваемыми, помимо простого включения / выключения их, это нанесло бы ущерб всей цели инструмента.)

FxCop, с другой стороны, является инструментом статического анализа, который работает на уровне управляемой сборки. Ему могут быть даны указания через атрибуты, потому что он может видеть атрибуты на элементах кода, например. Он обнаруживает проблемы, которые можно увидеть на "двоичном" уровне (как бы), а не на синтаксическом уровне.

Чтобы ответить на ваш вопрос, StyleCop не заменяет FxCop, а FxCop не заменяет stylecop. Это два разных инструмента с двумя разными целями, которые могут обеспечить реальную выгоду для вашего кода.

(АКА, я бегу с обоими.:))


Несколько примеров того, что один может обнаружить, и того, что другой может обнаружить:

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

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

stylecop работает с исходным кодом C#. fxcop просматривает ваш скомпилированный код с любого языка.net.

Альтернативой или хорошим дополнением к FxCop/StyleCop было бы использование коммерческого инструмента NDepend. С помощью этого инструмента можно написать кодовое правило поверх запросов LINQ (а именно CQLinq). Отказ от ответственности: я являюсь одним из разработчиков инструмента

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

CQLinq предназначен для написания правил кода, которые можно проверить в реальном времени в Visual Studio или проверить в процессе сборки и сообщить в отчете HTML/javascript.

Сила CQLinq по сравнению с FxCop или StyleCop заключается в том, что написать правило кода просто и сразу получить результаты. Предлагаются средства для просмотра соответствующих элементов кода. Конкретно это выглядит так:

Правило кода CQLinq

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

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

Они оба ОЧЕНЬ ценные инструменты, и вы должны использовать оба, но они сосредоточены на разных проблемах.

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

Статьи в Википедии об этом дают хорошее резюме различий:

http://en.wikipedia.org/wiki/StyleCop

http://en.wikipedia.org/wiki/FxCop

Другие вопросы по тегам