2011-06-28 10 views
1

私はStyleCopを初めて使用しています。私が働いている場所に独自のコーディングスタンダードを実装する必要があります。私はVS2005を使用しており、それをデバッグすることはできません。 VS2008/2010へのアップグレードは現在私たちの選択肢ではありません。StyleCopカスタムルール:メソッドのパラメータと変数

多くのことが不思議です:

1)メソッドのパラメータをどのように特定できますか?私は以下を試したが、どこに行くのかわからない、SDKのドキュメントは本当に有用ではありません。

private bool VisitElement(CsElement element, CsElement parentElement, object context) 
     { 
      if (element.ElementType == ElementType.Method) 
      { 
       ... 

2)宣言が割り当てに従わないことをどのようにして知ることができますか? Ex.given。

int i; // Wrong, give warning 
    int i = 0; // True usage 

3)どのように私は、文書がその中に1つだけの名前空間または唯一の1クラスが含まれていないとどのように私は自分の識別子(名前)を取得できることを見つけることができますか?

真:

namespace Hello 
    { 
    class P{ 

    } 
    } 

- 間違っ:

namespace Hi { 
    class C { 

    } 
    class E { 

    } 
} 
namespace Ho { 
    class D { 

    } 
} 

4)どのように私は、関数呼び出しを見つけるとどこにに見つけることができますか? (つまり、特定の関数の呼び出しをブロックする)

+0

どのバージョンのStyleCopをお使いですか? –

+0

@ニコール最新のVS2005互換バージョン。 – Mustafa

+0

使用しているバージョン番号を教えてください。 –

答えて

4

#1については、Microsoft.StyleCop.CSharp.ReadabilityRules.CheckMethodParametersメソッドの実装(Reflectorまたはhttp://stylecop.codeplex.com/SourceControl/changeset/view/64d44becb157#Project%2fSrc%2fAddIns%2fCSharp%2fAnalyzers%2fReadabilityRules.MethodParameters.csのいずれか)を参照してください。 #2のために

、トリックを行う必要があり、次のようなもの:既存のSA1402(FileMayOnlyContainASingleClass)とSA1403(FileMayOnlyContainASingleNamespace)ルールは#3の世話をする必要があります

private bool VisitExpression(Expression expression, Expression parentExpression, Statement parentStatement, CsElement parentElement, object context) 
{ 
    if (expression.ExpressionType == ExpressionType.VariableDeclarator) 
    { 
     VariableDeclaratorExpression declaratorExpression = (VariableDeclaratorExpression)expression; 
     if (declaratorExpression.Initializer == null) 
     { 
      this.AddViolation(parentElement, expression.LineNumber, "YourRule", declaratorExpression.Identifier.Text); 
     } 
    } 

    return true; 
} 

。あなたのシナリオでうまくいかない場合は、カスタムルールで何をやりたいかを指定してください。

#4は、ソースコードスタイルとは関係がないため、StyleCopルールではなくFxCopルールである必要があります。

関連する問題