2011-10-21 46 views
9
public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly 

當我運行代碼分析時,出現錯誤,因爲Microsoft無法識別單詞'Multi'(去圖中他們在IMultiValueConverter中使用它)。所以,我做了什麼來糾正這個問題是添加一個CodeAnalysisDictionary.xml文件,並按照提供的步驟here。然而,它似乎並沒有解決這個問題,我仍然得到一個代碼分析警告信息。CA1704 - 微軟似乎正在屏蔽'Multi'這個詞?

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

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) 

微軟是否真的阻止了'多''被添加到識別的單詞?

回答

13

您可以參考此feedback ticket。這顯然是通過設計。

您看到的行爲是因爲Code Analysis附帶了預定義的自定義詞典,當出現衝突時,該詞典始終會覆蓋任何其他自定義詞典。在這種情況下,「multi」在默認FXCop字典中被列爲<無法識別的>字。

要解決此問題,請打開默認詞典%VS安裝目錄%\ Team Tools \ Static Analysis Tools \ FxCop \ CustomDictionary.xml,並註釋掉或刪除<無法識別的>單詞部分中的「多」條目;在代碼分析中,「multi」將不再被標記爲拼寫錯誤。

+0

可悲的是車票被列爲「不會解決」 ......顯然這不是「足夠重要」,儘管這是2秒修復。 –

+1

即使他們想解決這個問題,這也是一個突破性的改變,因爲很多人目前可能都依賴於「默認」無法識別的事實。 – RobSiklos

+0

我作爲一個UserVoice請求輸入了這個 - 投票! http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6772021 – RobSiklos

0

嘗試添加這對您的customdictionary

<Deprecated> 
    <Term PreferredAlternate="Multi">multi</Term> 
</Deprecated>