2016-08-31 10 views
3

私たちは私たちのプロジェクトの一つは、「マイクロソフトすべてのルール」ルールセットのスーパーセットでFxCopのを有効にすると、それはまた、CA1309を有効にし、すぐにこのような構造不満開始:CA1309は.NET 4.5.1に対してコンパイルされたソースに対して有効ですか?

次のような警告を表示

if (translationItem.Description == "Description") 

enter image description here

stringhereに対する基準ソースを見ると、それはoperator ==が順番にEqualsHelperを使用String.Equalsを使用していることを示しています。 CA1309が提案したEqualsのオーバーロードを呼び出す場合、同じEqualsHelperが呼び出されます。したがって、==演算子はすでに序数比較を使用しているようです。

私たちは、このに上記のスニペットをリファクタリングする必要がありますので、私の質問は、次のとおりです。

if (string.Equals(translationItem.Description, "Description", StringComparison.Ordinal)) 

もしそうなら、なぜ我々べきでしょうか?

P.S.上記のスニペットで大文字と小文字を区別する文字列を使用するつもりです。

P.S.2。私たちはMicrosoft.CodeAnalysis.FxCopAnalyzersナゲットパッケージを使用して、オンザフライでコード解析を実行します。

+0

プロパティ(またはフィールド) '.Description'は' object'または何らかのインターフェイスタイプとして宣言されていますか? _Edit:_同様に、コード中の '=='トークンの上にマウスを置くと、ツールチップに 'bool object.operator ==(オブジェクト左、オブジェクト右)'と表示されますか? –

+0

これは文字列プロパティです – Vincent

+0

文字列プロパティが 'public string Description {get;セット; } '、' == '演算子とVS Pro 2015 Update 3の「Microsoft All Rules」ルールセットを使った比較では警告が出ません。警告が、あなたがそれと思われるコード行を参照していると確信していますか? – cynic

答えて

関連する問題