インスピレーションを探しているだけです。特にパフォーマンスとセキュリティの分野では、命名規則は重要ですが、「かっこいい」ものではありません ;)
ルールがドメイン/プロジェクトにのみ適用され、ルールがどれほど強力であるかを示している場合でも、お知らせください。
私は C# を使用していますが、あらゆる言語のルールに興味があります。
インスピレーションを探しているだけです。特にパフォーマンスとセキュリティの分野では、命名規則は重要ですが、「かっこいい」ものではありません ;)
ルールがドメイン/プロジェクトにのみ適用され、ルールがどれほど強力であるかを示している場合でも、お知らせください。
私は C# を使用していますが、あらゆる言語のルールに興味があります。
私の経験では、FxCop 用のカスタム ルール セットの作成を開始した開発者は、多くの場合、多くのことを思い出すとあきらめます。素晴らしいアイデアのように思えますが、苦労するだけの価値はありません。
FxCopカスタムルールを作成するという混乱の代わりに、商用ツールNDependを使用することもできます。このツールを使用すると、LINQクエリ (つまりCQLinq)に対するコードルールを記述できます。免責事項:私はツールの開発者の1人です
デフォルトでは200を超えるコードルールが提案されています。これらには、命名規則、設計、アーキテクチャ、コード品質、コードの進化、デッドコード、.NETFxの使用法などが含まれます。
CQLinqは、Visual Studioでライブで検証できる、またはビルドプロセス中に検証して、HTML/javascriptレポートでレポートできるコードルールの記述に専念しています。
FxCop APIまたは他のツールに対するCQLinqの強みは、コードルールを記述し、すぐに結果を取得することが簡単なことです。一致したコード要素を参照する機能が提案されています。具体的には、次のようになります。
これまでのところ、breusable.codeplex.comの fxcop ディレクトリの下に、 2 つのルールを備えた適切に機能するベースがあります。
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;
}
}
}