понедельник, мая 26, 2008

Пополнение в семействе копов

Все наверное знают, что такое FxCop (Microsoft Code Analysis). Если все же кто-то не знает, FxCop - это инструмент, позволяющий проверять выполнение определенных правил кодирования. Теперь в дополнение к нему Microsoft анонсирует выпуск Microsoft Source Analysis for C# (StyleCop) - инструмента для анализа исходных кодов.
В отличие от FxCop, который анализирует бинарники (точнее MSIL), StyleCop аналазирует исходники на C#. Анализирует на предмет удобства чтения, документированности, отступов и т.п. Всего около 200 правил, в том числе:

- Layout of elements, statements, expressions, and query clauses
- Placement of curly brackets, parenthesis, square brackets, etc
- Spacing around keywords and operator symbols
- Line spacing
- Placement of method parameters within method declarations or method calls
- Standard ordering of elements within a class
- Formatting of documentation within element headers and file headers
- Naming of elements, fields and variables
- Use of the built-in types
- Use of access modifiers
- Allowed contents of files
- Debugging text


Загрузить StyleCop можно отсюда

Сказать по правде, я не отношусь к поклонникам подобного рода инструментов. FxCop использую от случая к случаю, в основном, когда надо быстро выполнить формальное ревью большого количества незнакомого кода, чтобы оценить его общее качество. А на счет StyleCop, так по мне, это не более чем средство окончательно задолбать разработчиков.
А вы как думаете?

12 комментариев:

linker комментирует...

Я думаю что эта утилитка задолбает не только разработчиков, но и любого кто ей будет пользоваться.Поставил посмотреть ни чего толкового она не сказала.Тем более если стоит Resharper косяков в коде осыбых и не будет.ИМХО

Meowth комментирует...

Согласен с предыдущим. А учитывая, что Re# 4 уже в бете, эта утилитка будет просто способом проверить лояльность к M$, не более :) - пользуешься ей или нет

Nikolay Osinin комментирует...

Мне думается, что StyleCop будет полезен хотя бы тем, что снизит вероятность спора "о стилях". В команде с большой долей молодых девелоперов это может быть, своего рода, обучающим инструментом. А при применении практики коллективного владения кодом пользы от StyleCop будет еще больше.

Sergey Rozovik комментирует...

> to Nikolay Osinin
Единый стиль кодирования в команде должен вырабатываться на основе добровольного консенсуса, а не способом "нагибания" одних другими.
Дугое дело, когда к примеру, разрабатыватеся framework и есть обязательное требование документирования всех публичных членов, потому что по этой документации генерится API reference. Тут такой инструмент может быть полезен.

Meowth комментирует...

>>>есть обязательное требование документирования всех публичных членов,
Ну вот конкретно на такой случай даже встроенных возможносстей студии хватает.
Другое дело, конечно, если StyleCop гибко настраивается - тогда можно загнать корпоративный CodingStyle.doc в коп, и мантайнерам жить куда легче.

OCTAGRAM комментирует...

У них в Basic была практически уникальная фича, код форматировался на лету, как только переходишь на другую строчку.

Вот такую же автоматику надо бы и здесь применить.

Meowth комментирует...

И в с#/vb уже есть такая фича - начиная с 2005 студии точно - так что никуда ходить даже не понадобится

Nikolay Osinin комментирует...

to Sergey Rozovik
Так вот StyleCop как раз и позволит поддерживать единый стиль кодирования. Причем сделает это без обид и эмоций.

snow комментирует...

по-моему могут быть проблемы с тем, как прикрутить его к CI.

Nikolay Osinin комментирует...

Особых проблем с прикручиванием StyleCop к CI быть не должно. В этой статье достаточно подробно описана настройка для MSBuild.

Анонимный комментирует...

Думаю, что инструмент нормальный, и его стоит использовать, что бы избежать проблем с поддержкой проекта.
Только вот прикрутить его к проекту который разрабатывается уже пару лет практически не возможно.

Juri Mulenko комментирует...

Надо будет посмотреть, если можно кастомайзить правила то возбмем на вооружение.
А FxCop мне понравился. Спас не один час при подготовке к Code review и позволил привести legacy проект к перевариваемому виду.