mpg*_*mpg 9 stylecop hungarian-notation
我的代码包含一个名为"m_d3dDevice"的变量.
StyleCop抱怨这个名字:
SA1305:变量名称'm_d3dDevice'以类似匈牙利表示法的前缀开头.删除前缀或将其添加到允许的前缀列表中.
(注意我手动禁用了SA1308("m_"),这是我愿意不服从的少数规则之一.)
我不能允许"d3d"作为匈牙利标签中的例外,因为它只允许1或2个字符前缀,并且允许"d3"没有帮助.我已经尝试了我能想到的所有内容,将"d3d"添加到我的CustomDictionary文件中(无论如何,文档暗示CustomDict不用于规则1305).
有什么建议使StyleCop允许这个吗?现在不需要F2我的变量是一件值得骄傲的事.
Der*_*ark 12
您还可以根据具体情况抑制stylecop.例如
[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.StyleCop.CSharp.NamingRules",
"SA1305:FieldNamesMustNotUseHungarianNotation",
Justification = "Using Win32 naming for consistency.")]
IntPtr hFile;
Run Code Online (Sandbox Code Playgroud)
如果您有许多违规名称,这可能不是一个有吸引力的选择,但对于一两个,它通常很好.
你可以看看StyleCop +.它包含灵活的命名规则,允许您强制所有私有字段以"m_"(或任何您希望的方式)开头,而不是禁用名称检查(就像您所做的那样).
关于"d3dDevice" - 这是一个非常有趣的案例.逻辑上,它分为以下单词 - {"d","3","d","Device"}或{"d3","d","Device"}.第二个"d"似乎不遵循"camelNotation".
但是,我坚信静态分析(特别是命名)应该足够灵活以满足用户需求.目前,StyleCop +可以通过以下方式支持您的案例 - 例如,您可以将"例外"(根据需要)添加到私有字段的命名模板中,以便它看起来像:
m _ $(aaBb)
m_d3d $(AaBb)
这更有可能是解决方法,但我会考虑你的"d3d"案例 - 也许StyleCop +会支持这样的事情.
谢谢你有趣的例子!
您也可以使用Settings.StyleCop
软件包文件中的来配置设置。
您可以通过在Settings.StyleCop
文件中添加以下代码来隐藏特定的单词:
<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
<AnalyzerSettings>
<CollectionProperty Name="Hungarian">
<Value>as</Value>
<Value>do</Value>
<Value>id</Value>
<Value>if</Value>
<Value>in</Value>
<Value>ip</Value>
<Value>is</Value>
<Value>mx</Value>
<Value>my</Value>
<Value>no</Value>
<Value>on</Value>
<Value>to</Value>
<Value>ui</Value>
<Value>vs</Value>
<Value>x</Value>
<Value>y</Value>
<Value>z</Value>
<Value>iOS</Value>
<Value>IOS</Value>
</CollectionProperty>
</AnalyzerSettings>
</Analyzer>
Run Code Online (Sandbox Code Playgroud)
您可以Hungarain
通过将以下内容添加到Settings.StyleCop
文件中来取消规则本身
<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
<Rules>
<Rule Name="FieldNamesMustNotUseHungarianNotation">
<RuleSettings>
<BooleanProperty Name="Enabled">
False
</BooleanProperty>
</RuleSettings>
</Rule>
</Rules>
</Analyzer>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14866 次 |
最近记录: |