StyleCop — контроль стиля исходного кода.

Microsoft порадовал новым инструментом: StyleCop.

StyleCop проверяет стиль исходного кода (Csharp only), более 100-х правил разбитых на 7 групп:

  • Документация — проверка оформления документации для классов, методов, полей. Именно оформление, а не содержание :), то есть главное что бы был xml валидный текст, присутствовали нужные элементы. И внимание в конце предложения стояла точка, а описание параметра в методе было длинее 10 символов. Всего 42 правила.
  • Разметка кода и пустые строки - анализ расположения скобочек (фигурных) и отступов в виде пустых строк. 16 правил
  • Сопровождаемость — всего 7 правил, например, что в одном файл задекларирован только один класс.
  • Наименования — проверяет, что класс назван с заглавной буквы, поле с маленькой, что нет символов подчеркивания, и т.д. 11 правил.
  • Расположение в определенном порядке — проверяет расположения частей кода, и их порядок. 8 правил.
  • Читаемость — проверка на "читаемость" и что код правильно отформатирован. 22 правила.
  • Пространство между элементами — проверка отступов между элементами, например наличие проблема перед запятой, и т.д. 28 правил.

Полный список правил можно найти у Wojciech Zimirski. Человек не поленился и "выдрал" всё из ресурсов.

image

Если Вы проверите любой свой проект на "стильность" — будете приятно удивлены, сколько же оказывается ошибок по стилю. Второе замечание — всё, что генерируется Visual Studio — так же неверно с точки зрения стиля. В третьих Microsoft не следует этому стилю. Достаточно загрузить исходники .net, что бы в этом убедится.

Как всегда сыр-бор разгорелся вокруг нескольких правил:

Использование префикса m_ вместо this. в полях класса. Рекомендовано this. (Это я еще могу понять, я ненавижу символ подчеркивания).

Использование табуляции. Рекомендуются только пробелы. Это вообще идиотское правило.

Во-первых, потому что кому-то нравится отступ в 2 пробела, кому-то в 3, кому-то в 4, а кому-то и в 8, и редактор (нормальный редактор), имеет настройки сколько пробелов должен показывать символ табуляции. И все довольны.

Во-вторых, эта проблема должна спокойно решится с помощью Edit->Advanced->Format Document, как и все правила относящиеся к разметке кода, пустым строкам, читаемости и пробелов между элементами. Документацию, по крайней мере, можно было бы генерировать. (Хотя бы "рыбу"). Правда тогда пользы от такого инструмента вообще не будет, останется проверить что using расположен внутри namespace и что нет префикса m_, да и символа подчеркивания в элементах.

Консольное приложение сгенерированное Visual Studio — я добавил одну строку.

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
        }
    }
}

Итого 8 ошибок:

Правильная версия:

// <copyright file="Program.cs" company="MP">
// Copyright (c) 2008 All Right Reserved
// </copyright>
// <author>M P</author>
// <email>email@nowhere.com</email>
// <date>2008-05-24</date>
// <summary>Contains assembly information.</summary>

namespace ConsoleApplication1
{
    using System;

    /// <summary>
    /// Just a class.
    /// </summary>
    public class Program
    {
        /// <summary>
        /// Mains the specified args.
        /// </summary>
        /// <param name="args">Array of command line arguments.</param>
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
        }
    }
}

К счастью все правила можно отключить.

Справедливости ради что-то новое я почерпнул:

Почему using желателен внутри namespace.

Почему название поля не должно начинаться с подчеркивания.

И самое главное они думают что в будущем StyleCop будет не только находить ошибки, но и исправлять их.

Tags: , , , , ,

Смотрите также: