Кто-нибудь создал классные правила для FxCop / StyleCop? - PullRequest
9 голосов
/ 30 января 2009

Я просто ищу вдохновение. Особенно в области производительности и безопасности соглашения о присвоении имен важны, но не такие «крутые»;)

Даже если ваше правило применимо только к вашему домену / проекту, но демонстрирует, насколько мощным может быть правило, сообщите мне.

Я работаю с C #, но меня интересуют правила для любого языка.

Ответы [ 3 ]

7 голосов
/ 30 января 2009

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

3 голосов
/ 19 октября 2010

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

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

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

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

CQLinq code rule

1 голос
/ 21 сентября 2012

У меня есть хорошая функциональная база с двумя правилами на breusable.codeplex.com в каталоге fxcop

ConfigKeyExistsInConfig (убедитесь, что любые ссылки на ConfigurationManager с волшебным ключом строки действительно существуют в файле конфигурации.

NoUnderscoresInProperties

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.FxCop.Sdk;

namespace RulesByImaginaryDevelopment
{
  public class NoUnderscoresInProperties : BaseRule
  {
    public NoUnderscoresInProperties() : base("NoUnderscoresInProperties") { }

    public override ProblemCollection Check(Member member)
    {
        var prop = member as PropertyNode;
        if(prop==null)
            return Problems;
        if(prop.Name.Name.Contains("_"))
        {
            Problems.Add(new Problem(new Resolution("Remove any '_' from name "+prop.Name.Name)));
        }
        return Problems;
    }
  }
}

Также http://msdn.microsoft.com/en-us/magazine/cc163930.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...