Як забезпечити єдиний стандарт кодування в .NET з підтримкою інструментів


14

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

Деякі роблять це за допомогою великого парного програмування, інші ведуть список стандартів кодування та роблять огляд вручну. Інші навіть використовують інструмент аналізу статичного коду від Visual Studio, щоб переконатися, що стандарти кодування виконуються.

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

Відповіді:


15

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

Він може бути інтегрований у вашу збірку CI і спричинити збої в збірці, якщо були введені будь-які порушення.


Будь-яка інформація про те, як ним користуватися? Я хотів би запустити перевірку стилів перед кожним вчиненням. Тож для цього мені потрібна кліпа. Чи є. Я не зміг знайти жодної відповідної інформації.
FreeLightman

1
Це може допомогти blog.submain.com/stylecop-detailed-guide
z-boss

@R. - якщо тільки один міг налаштувати правила StyleCop. Ой, зачекайте ...
Одед

@R. - ви також можете написати свої власні правила.
Одед

FWIW, з readme на github: "Хоча запити на виклики продовжуватимуться прийматись, навряд чи буде здійснено якусь велику розробку в рамках цього проекту. Підтримувати користувальницький аналізатор C #, що використовується StyleCop, стає все важче і неефективніше".
іржавий

6

По-перше, переконайтеся, що у вас є належний сервер збірки, який постійно створює ваш код. TFS або Jenkins / Hudson + Msbuild - хороші варіанти. На цьому сервері побудови ви, звичайно, запускаєте тести, а також можете запускати статичний аналіз коду, а також синтаксичні шашки.

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

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

Правила:

  • Завжди майте нульові попередження. Якщо вам доведеться, спочатку зменшіть набір перевірок, а потім додайте нові чеки до кожного спринту та виправте їх. Переконайтесь, що кожна перевірка, яка виконується, має для вас фактичну цінність та відповідає вашим стандартам.

  • Якщо у вас є доменні правила, яких потрібно дотримуватися, не бійтеся впроваджувати власні правила.

Для перевірки синтаксису використовуйте StyleCop або StyleCop для Resharper, якщо ви використовуєте Resharper (що я також дуже рекомендую).


2

StyleCop і FxCop - це мої інструменти з легкої ваги, які нагадують стилі коду моїм розробникам. Resharper також хороший, але він робить VS дуже повільним.

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

Також доступне розширення StyleCop Fixer для візуальної студії, що допомагає виправляти звичайні помилки.

На метрику коду іноді впливають і стилі коду. Ви можете відстежувати збереження коду за допомогою цього інструменту.


2

Я хотів би наголосити на тому, що спочатку вже працював автоматичний аналіз коду (FxCop, StyleCopy, CI-версії тощо), надаючи перевагу оглядам вручну. Автоматичні чеки наберуть набагато більше речей, ніж це, мабуть, ручний огляд, і, як правило, набагато жорсткіший, послідовніший і є самостійним документуванням. Огляди вручну можуть бути корисними для більш високого рівня дизайнерських рішень тощо, але, на мій досвід, вони можуть бути дуже суб'єктивними та випадковими.


0

NDepend може використовуватися для забезпечення різних стандартів кодування на базі коду .NET. У ньому є близько 200 правил коду за замовчуванням, які можна переглянути тут . Також легко налаштувати існуючі правила або створити власні правила, оскільки з NDepend правило - це лише запит C # LINQ .

Відмова: Я працюю на NDepend

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