宪兵有AvoidAssemblyVersionMismatchRule以下描述:
此规则检查
[AssemblyVersion]匹配两者[AssemblyFileVersion]何时出现在程序集中.部署应用程序后,在两个属性中具有不同的版本号可能会造成混淆.
例如,此规则会警告Microsoft System.dll具有以下属性:
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.50727.3053")]
Run Code Online (Sandbox Code Playgroud)
我不同意宪兵的规则.接下来它将使您无法使用类似于Microsoft使用的版本控制方案,即
AssemblyFileVersion每个构建,AssemblyVersion只在公共接口或其他大的变化,AssemblyVersion并AssemblyFileVersion共享一个共同的前缀,我认为这个版本控制方案是为什么能够区分AssemblyVersion和AssemblyFileVersion首先区分的设计原因.
我无法想出为什么强制两个装配属性相等是一个好习惯,但也许你可以!我会对你的意见感兴趣.
如果确实没有充分的理由,我很快会建议宪兵开发者将规则改为
当规则内部存在两个前缀时,此规则检查
[AssemblyVersion]并且具有公共的非空前缀.[AssemblyFileVersion]
您希望将哪些可定义的静态代码检查规则添加到FxCop和/或Gendarme中?
您为什么希望看到添加规则,例如有什么好处?
你的规则如何实施?
是否有可能抑制特定的宪兵缺陷信息?我想在源代码中用标志或类似的东西来做这件事.
是否有任何工具可以对.net桌面程序集和可删除文件执行安全性分析?我使用了FXCOP和Gendarme,但我认为它们还不够.
我知道该工具只能在.net程序集上运行.有没有办法让它在源文件上运行?即使它需要源代码修改,我想知道这种可能性.
谢谢
我有索引器并想检查它是否为空,如果是,则抛出ArgumentNullException,但Gendarme设置警告
InstantiateArgumentExceptionCorrectlyRule:此方法抛出ArgumentException(或派生)异常,而不指定现有参数名称.这可以向开发人员隐藏有用的信息.修复异常参数以使用正确的参数名称(或确保参数的顺序正确).
public override LocalizedString this[string key]
{
get
{
if (key == null)
{
throw new ArgumentNullException("key");
}
return base[key];
}
set
{
if (key == null || value == null)
{
throw new ArgumentNullException("key");
}
base[key] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
如何修复索引器?
gendarme ×7
fxcop ×3
.net ×1
asp.net ×1
assemblies ×1
assemblyinfo ×1
attributes ×1
c# ×1
indexer ×1
mono ×1
security ×1
versioning ×1