2013-05-09 30 views
1

我想抑制CA1709:標識符應該正確放置,位於 public class IDd。例如,我想用IDd作爲正確的單詞。但我不能。我試過代碼分析字典中的所有內容:無法以任何方式抑制CA1709

<?xml version="1.0" encoding="utf-8"?> 
<Dictionary> 
    <Words> 
    <Unrecognized> 
     <Word></Word> 
    </Unrecognized> 
    <Recognized> 
     <Word>d</Word> 
     <Word>IDd</Word> 
    </Recognized> 
     <Deprecated> 
      <Term PreferredAlternate=""></Term> 
     </Deprecated> 
     <Compound> 
      <Term CompoundAlternate="IDd">IDd</Term> 
     </Compound> 
    <DiscreteExceptions> 
     <Term>IDd</Term> 
    </DiscreteExceptions> 
    </Words> 
    <Acronyms> 
    <CasingExceptions> 
     <Acronym>IDd</Acronym> 
     <Acronym>ID</Acronym> 
     <Acronym>d</Acronym> 
    </CasingExceptions> 
    </Acronyms> 
</Dictionary> 

但是沒有什麼能幫助我在這種情況下添加這項工作。你會建議什麼?

+0

你想要它抑制了一個案件,或整個解決方案? – Mightymuke 2013-05-10 04:19:10

+0

使用該類上的[SuppressMessage]屬性。 – 2013-05-10 07:47:58

+0

我想壓制它的所有解決方案。我可以通過[SuppressMessage]屬性來抑制它,但是通過這個屬性來壓制所有地方的所有單詞是錯誤的。爲此,有代碼分析字典。但它不能很好地工作,或者我不知道在這種情況下使用它... – 2013-05-10 09:14:51

回答

4

這裏的問題是「Dd」,而不是完整的「IDd」,這是CA1709違規消息應該顯示的內容。

這可以解決,如果你認爲是一個實際的字相當加入「DD」的字典作爲一個公認的一句話:

<?xml version="1.0" encoding="utf-8" ?> 
<Dictionary> 
    <Words> 
     <Recognized> 
      <Word>dd</Word> 
     </Recognized> 
    </Words> 
</Dictionary> 

也可以將其作爲一個縮寫外殼例外,如果你不考慮這是一個字仍然想要使用帕斯卡套管:

<?xml version="1.0" encoding="utf-8" ?> 
<Dictionary> 
    <Acronyms> 
     <CasingExceptions> 
      <Acronym>Dd</Acronym> 
     </CasingExceptions> 
    </Acronyms> 
</Dictionary> 
+0

第一個示例與單詞不起作用...這就是對我感到困惑..爲什麼我不能在字典中加入IDd ...既不是IDD也不是DD ..第二個是工作,但它也不是完美的,每個Dd都會被套上異常。但我只想要單詞IDD。 – 2013-05-10 13:39:02

+0

「IDd」排除不起作用,因爲規則有一個特殊情況可以忽略領先的「I」(用於接口名稱,但會被規則濫用)。將「dd」添加到識別的單詞列表對我來說工作得很好。您正在使用哪個版本的Visual Studio代碼分析或FxCop? – 2013-05-10 13:46:25

+0

VS2012 update2 ... so CA 11.0 MSBUILD 4 – 2013-05-10 14:01:57