FxCop静态代码分析:处理" DB" (和其他人)喜欢" Id"

时间:2012-09-27 10:45:00

标签: c# .net code-analysis fxcop

我所知道的所有项目 - 包括Entity Framework(微软本身!) - 使用“Db”代替“DB”。因此他们将“Db”视为缩写。但是FxCop将该术语视为首字母缩略词,因此您必须将其称为“DB”。 我有类似的其他术语,我喜欢写作像abbeviations。我如何强制FxCop这样做?我想要与“Id”相同的行为。 添加自定义词典是我认为的第一步,但是将“Db”添加到Dictionary / Acronyms / CasingExceptions是不够的。你仍然可以称之为“DB”。 “Db”被接受但不被强制。不知何故,“Id”真的被迫不允许你称之为“ID”。

我已经看了

“C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Team Tools \ Static Analysis Tools \ FxCop \ CustomDictionary.xml”

弄清楚他们是如何做到的。但“Id”不是这个默认字典的一部分,也许还有另一个字典?

有什么想法吗?


另外我不明白为什么“DB”没有作为缩写处理,默认情况下它是“database”的缩写,“Id”是“identifier”的缩写:

http://msdn.microsoft.com/en-us/library/ms182256(v=VS.80).aspx

也许是因为其他一些例外,它不是缩写而是首字母缩略词?让我们说“Doggy Bag”(“DB”)?

1 个答案:

答案 0 :(得分:3)

Id的处理在Microsoft.FxCop.Rules.Naming.CasingWordParser.CheckAbbreviation()中进行了硬编码(至少在VS 10中),并且基本上没有什么可以做到连接到该逻辑。

至于为什么DB被认为是首字母缩略词而不是缩写,可能是因为“数据库”最初是“数据库”。 (单独的单词形式似乎仍在使用中,虽然与复合形式相比,它相当罕见。)根据设计指南,如果它是缩写,我们根本不应该使用“db”,所以我想我们应该认为自己很幸运,它首先被认为是首字母缩略词。 ;)

所有这一切,我个人一直在发现,随着时间的推移,两个字母的首字母缩略词越来越不愉快。我发现它看起来很丑陋和“特殊”,而且对于几乎每个第一次被引入设计指南的人来说,它似乎都是违反直觉的。我从来没有看到为什么设计指南团队最初认为这可能是一个好主意的解释,但我不得不怀疑他们中的大多数人是否可能不希望如果他们今天有机会他们可以改变决定。