Dot-Net

CA1704 - 微軟似乎屏蔽了“Multi”這個詞?

  • June 25, 2019
public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly

當我執行程式碼分析時,我收到一個錯誤,因為 Microsoft 無法辨識“Multi”這個詞(想想他們在 中使用它IMultiValueConverter)。因此,我為糾正此問題所做的是添加 CodeAnalysisDictionary.xml 文件並按照此處提供的步驟進行操作。但是,它似乎並沒有解決問題,我仍然收到程式碼分析警告消息。

為了確保這不是辨識單詞部分的錯誤,我添加了另一個類和另一個異常。

public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly
public class MutiiSomething { } //NO WARNING

<Dictionary>
 <Words>
   <Recognized>
     <Word>Multi</Word> <-- This seems to not do anything... -->
     <Word>Mutii</Word> <-- This actually does something... -->
   </Recognized>
 </Words>
</Dictionary>

修復它的另一種方法是使用 SuppressMessage,但如果我打算在所有地方使用這個詞,這不是一個合適的解決方案。

[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Multi")]
public class MultiSomething { } //NO WARNING (Suppressed)

Microsoft 是否真的阻止將“Multi”添加到已辨識的單詞中?

您可以參考此回饋票。這顯然是設計使然。

您看到的行為是因為程式碼分析附帶了一個預定義的自定義字典,該字典在發生衝突時始終覆蓋任何其他自定義字典。在這種情況下,“multi”在預設的 FXCop 字典中被列為 <unrecognized> 單詞。

要解決此問題,請打開預設字典 %VS Install Directory%\Team Tools\Static Analysis Tools\FxCop\CustomDictionary.xml 並註釋掉或刪除 <unrecognized> words 部分中的“multi”條目;“multi”將不再在程式碼分析中被標記為拼寫錯誤。

引用自:https://stackoverflow.com/questions/7854518