0

SearchableAttributeクラスのプロパティにタグを付けるという名前の属性があります。ただし、この属性stringでタグ付けできるのは、タイプのプロパティのみです。それを制限するために、クラスのプロパティを分析し、属性の存在を確認し、プロパティのタイプが でない場合を作成[Searchable]する CodeAnalysis ルールを作成しようとしています。[Searchable]Problemstring

これは、これまでの Rule クラスにあるものです。

public override ProblemCollection Check(Member member) {
    PropertyNode property = member as PropertyNode;
    if (property == null) {
        return null;
    }

    if (property.Attributes.Any(a => a.Type.FullName.Equals((typeof(SearchableAttribute)).FullName)
            && !property.Type.FullName.Equals((typeof(string)).FullName)) {
        Resolution resolution = getResolution(property);
        Problem problem = new Problem(resolution);
        Problems.Add(problem);
    }

    return Problems;
}

これは実際に機能しますが、信じられません...いいえ、タイプの完全な名前を本当に比較する必要があるとは信じたくありません。ただし、の存在を適切に確認しSearchableAttribute、プロパティのタイプを文字列と比較する方法がわかりません。クリーンでエレガントなソリューションはありませんか?

4

1 に答える 1

0

Microsoft.FxCop.Sdk.FrameworkTypes.Stringトリックを行う必要があります。

FWIW、フレームワークの種類とその FxCopTypeNodeの間に実際のブリッジはありません。すべてのマッピングは、理想的にはアセンブリの完全修飾名を含む名前に基づいて作成する必要があります。プロパティは基本的に、FxCop フレームワークによって事前に作成されたマッピングにアクセスするためのFrameworkTypesショートカットを提供します。

于 2015-12-02T15:11:09.243 に答える