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. Через деякий час, однак, переваги справді закріплюються, і це виявляється дуже корисним інструментом для підтримки послідовності у джерелі. :)
Грег Д

1
чудова відповідь, що я шукав :)
GibboK

16

stylecop працює з вихідним кодом на C #. fxcop переглядає ваш скомпільований код з будь-якої мови .net.


Тож якщо ви використовуєте Stylecop, чи може FXCop додати якесь значення?
JL.

Справді, вам краще використовувати FxCop.
Ендрю Роллінгс,

Принаймні наразі, поки це не стане більш налаштованим. :)
Ендрю Роллінгс

1
Навряд чи stylecop стане значно більш налаштовуваним. Набагато важливішою особливістю stylecop є автоматичне виправлення порушень стилю.
Грег Д,

ми використовуємо Resharper для автоматичного приведення коду у відповідність із правилами stylecop. Тільки це робить вартістю покупної ціни. І ви отримуєте всі інші переваги, крім цього.
Без повернення коштів Не повертається

11

Альтернативою або хорошим доповненням до FxCop / StyleCop було б використання комерційного інструменту NDepend . За допомогою цього інструменту можна писати правило коду над запитами LINQ (а саме CQLinq) . Застереження: Я є одним із розробників інструменту

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

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

Сила CQLinq перед FxCop або StyleCop полягає в тому, що писати правило коду і отримувати негайно результати просто. Пропонуються засоби для перегляду відповідних елементів коду. Конкретно це виглядає так:

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


6

FXCop проводить статичний аналіз коду ваших керованих збірок коду. Подумайте про це як про пошук проблем, які спричинять проблеми під час виконання або які впливатимуть на те, як розробник вважає, що код працюватиме (недосяжний код).

StyleCop аналізує структуру коду з текстової точки зору. Подумайте про це як про проблеми, які вплинуть на ваш досвід розробки та проектування (форматування, правила імен, документація)

Вони обидва ДУЖЕ цінні інструменти, і вам слід використовувати обидва, але вони зосереджуються на різних проблемах.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.