- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
FxCop 要我用大写 N 拼写用户名(即用户名),因为它是一个复合词。但是,出于一致性原因,我们需要将其拼写为小写字母 n - 因此要么是用户名,要么是用户名。
我尝试通过将以下部分添加到该部分来调整 CodeAnalysisDictionary.xml:
<DiscreteExceptions>
<Term>username</Term>
</DiscreteExceptions>
据我了解自定义词典的工作原理,这应该告诉 FxCop 将用户名视为离散术语并防止 CompoundWordsShouldBeCasedCorrectly (CA1702) 检查引发错误。
不幸的是,这不起作用。有谁知道为什么会这样以及如何解决这个问题?我不想添加抑制,因为这会严重扰乱 GlobalSuppressions 文件,因为出现的次数很多。
编辑添加:目前我已经使用 GlobalSuppressions 解决了这个问题,但考虑到问题的性质,这似乎不是解决这个问题的理想方法。任何人都可以提示在哪里可以找到有关 FxCop 如何应用字典中定义的规则的更多信息吗?
最佳答案
我在 FxCop/托管代码分析团队担任了 3 年的开发人员,我得到了您的答案。自从我那个时代以来,情况发生了变化,我已经完全忘记了自定义字典处理是如何工作的,所以我花了很多时间才弄清楚这一点。 :)
简短的回答是,您需要从 C:\Program Files (x86)\Microsoft FxCop 1.36\CustomDictionary.xml 中删除对用户名、用户名、用户名和用户名的所有引用。
通常,我不会推荐这样做,因为它不是必需的,但我认为您发现了一个错误,这是我能找到的唯一解决方法。
好的,现在是长的答案......
该规则有两个不同的检查,其工作方式如下:
FileName --> { "file", "name" }
filename
被认为是一个有效的词),<Term CompoundAlternate="FileName">filename</Term>
在<Compound>
自定义词典的部分,那么它的意思是 虽然filename
是一个词,设计指南(主要是为了一致性 框架中早于规则存在的现有技术)坚持它 应该写成FileName
,所以我们必须抑制警告。<Term>filename</Term>
在 <DiscreteExceptions>
中输入 自定义词典的一部分,那么它的意思是尽管“文件名”是 一个词,在不同的上下文中也可能是两个词"file"和“名称”。例如 Onset是一个词,但要求用户更改DoSomethingOnSet
至 DoSomethingOnset
会是噪音,所以我们必须抑制警告。请注意您的警告:Username
应该是 UserName
在 B 部分中检测到,它不引用 DiscreteExceptions 部分,这就是为什么您无法通过修改该部分来抑制警告。问题是默认的自定义词典有一个条目说明 username
的正确大小写总是 UserName
.它需要以某种方式删除或覆盖。
现在,理想的解决方案是单独保留默认自定义词典,指定 SearchFxCopDir=false
在您的项目文件中,然后仅合并您希望在用于您的项目的 CustomDictionary.xml 中的默认自定义词典的部分。遗憾的是,这不起作用,因为 FxCop 1.36 忽略了 SearchFxCopDir 指令并始终将其视为 true。我相信这是一个错误,但也有可能这是一个有意的更改,因为该指令没有记录并且没有相应的 UI。老实说我不知道...
鉴于 FxCop 除了项目自定义词典之外,始终使用其默认自定义词典,您唯一的办法是从默认自定义词典中删除相关条目。
如果有机会,我会联系当前的代码分析团队,看看这是否真的是一个错误,然后在这里报告...
关于c# - FxCop:复合词应被视为离散词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006795/
将“”转换为“>”的主要目的是避免以下内联脚本: var foo = "alert('bug');"; // the value of foo is generated from server
我有以下想法: 在德语中我们有四个额外的字母(ä、ö、ü、ß),我不知道任何其他语言有这些声音,但我认为有口音的法国人也知道这个问题。我们在 Google Play 商店中有很多适用于城市、公交车站、
#!/bin/bash read nameArg find -name "$nameArg" 使用此代码,当我输入例如 *.txt 时,它将为我提供以 txt 结尾的所有文件,但我只想要名称为 *.t
我在 MySQL 5.7.27 中有一个带有 utf8mb4_unicode_ci 排序规则的用户表。 不幸的是, ı 没有像 i 那样进行线程化,例如,以下查询将找不到 Yılmaz select
我的简单 MySQL 查询: SELECT `word` FROM `nouns` WHERE `word` LIKE 'vandenys' 返回: vandenis 但是“vandenYs
虽然我以前用过这样的代码,而且很明显编译器有足够的信息可以工作,但我真的不明白为什么会这样编译: template auto foo(const T& t, I i) { return st
如何实现一个以 int 开头的函数,并在每次(经历有限数量的可能性)返回 1 的几个(例如,5 个) bool 值之一时从中减去 1。 理想情况下的外观是: function list1 list2
因此,如果我的数据库中有一个包含值的表 1 2 3 4 NULL 我执行了查询 SELECT MAX(col1) FROM 我会得到 4。有什么办法可以改变这个,所以 Null 将被视为最大值而不是
例如:我在数据库中有一条记录:[Example] Attena Illusive - 01 [720p].mkv尝试使用查询进行搜索: SELECT ts_rank_cd(to_tsvector('
我试图创建 2 个简单的盒子,并允许用户从 1 个盒子中选择数据,然后将其复制到第二个盒子。如果第二个框中已经有相同的文本,请在后面附加一些简单的文本。 它基本上在该项目不在第二个框中时起作用。但是,
这个问题已经有答案了: How to read a file from jar in Java? (6 个回答) 已关闭10 年前。 我想从我的 *jar 存档中读取文件。我在互联网上阅读了如何从 z
我在 Javascript 中偶然发现了一个我无法理解的极其奇怪的事件。 这是一个非常简单的 if 语句: let hours = 20; 我在这里设置了一个断点,并在调试器中设置了hours = 0
这两个查询给出了完全相同的结果: select * from topics where name='Harligt'; select * from topics where name='Härligt
我有一个包含数值和 NaN 的表格。求和时,如果所选值包含 NaN,则结果将为 NaN。有没有办法让 postgresql 在求和时将它们视为 0 而不是 NaN?或者我只需要将表中的所有 NaN 转
我有一个正在构建的页面,我希望当我滚动(向上或向下)页面时滚动到下一个 div(每个 div 是窗口高度的 100%)。并在那里“固定”,直到您再次滚动。可以在此处看到我正在努力完成的示例: http
我正在用 Javascript 制作一个小的 HTML 页面。它不需要服务器端,但我需要存储这个人所做的事情,所以我正在使用 localStorage。( list ) 如今,浏览器可以选择不存储 c
这两个查询给了我完全相同的结果: select * from topics where name='Harligt'; select * from topics where name='Härligt
我想向 Lua 公开一些 C++ 类。我可以调用Widget:New()获取带有元表集的返回用户数据到表 WidgetMeta . WidgetMeta包含所有 C++ 函数,它是 __index设置
我正在使用一个大型的旧数据库,现在我尝试使用 hibernate 而不是 SQL 来访问它。更大的问题之一是在外键中无限制地使用“0”和“-1”(意思是“NULL”)。 我生成了很多代码,但我手动添加
我试图将一个数字传递到一个 BYTES 数组中 - 但将该数字视为一个字符数组。这是我的代码: for(int i=1;i<=totalFiles;i++) { BYTE* input = n
我是一名优秀的程序员,十分优秀!