Stylecop против FXcop

Ответы:

171

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

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

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

(AKA, я бегаю с обоими. :))


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

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

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

Грег Д.
источник
1
Да, предыдущие ответы, сравнивающие эти два, неверны по всем пунктам. StyleCop и FxCop выполняют две очень разные задачи, и стоит изучить ценность каждого из них для вашей кодовой базы и почему вы должны их запускать.
Jedidja
3
Согласитесь, не все правила StyleCop хороши, но, как вы говорите, те, которые вам не нужны, могут быть отключены. Мы используем StyleCop - после отключения простых дурацких правил он приносит нам пользу - по низкой цене! Рекомендуемые. (обратите внимание, что мы ненавидели это с первого взгляда ..)
stiank81
@ stiank81: Да, я думаю, сначала все ненавидят StyleCop. Однако по прошествии некоторого времени преимущества действительно проявятся, и это окажется очень полезным инструментом для поддержания согласованности исходного кода. :)
Greg D
1
отличный ответ то, что я искал :)
GibboK
16

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

Нет возврата, нет возврата
источник
Итак, если вы используете Stylecop, может ли FXCop добавить какую-либо ценность?
JL.
На самом деле, вам лучше использовать FxCop.
Эндрю Роллингс,
По крайней мере, пока, пока он не станет более настраиваемым. :)
Эндрю Роллингс
1
Маловероятно, что stylecop станет значительно более настраиваемым. Гораздо более важная функция stylecop - автоматическое исправление нарушений стиля.
Greg D
мы используем Resharper, чтобы автоматически привести код в соответствие с правилами stylecop. Уже одно это оправдывает закупочную цену. Кроме того, вы получаете все остальные преимущества.
Возврат средств не осуществляется. Возврат не осуществляется
11

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

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

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

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

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

Патрик из команды NDepend
источник
6

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

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

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

АлленСанборн
источник
5

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

В статьях в Википедии об этом подробно описаны различия:

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

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

Эндрю Роллингс
источник