我在Asp.Net页面上有一个控件,在该页面上是一个名为"PaReq"的控件违反了规则:
CA1704:IdentifiersShouldBeSpelledCorrectly
在我不确定如何抑制此错误之前我使用过抑制,因为它是在生成的文件中定义的.
我可以在自定义词典中执行此操作但这意味着所有开发人员都需要保持同步此词典的副本,如果可能的话我宁愿避免这样做.此外,术语"PaReq"仅用于此项目.
如何以及在何处应用抑制?
我正在使用 FxCop 1.36 运行静态代码分析,并且不断收到警告 CA1034:NestedTypesShouldNotBeVisible。
我会理解父类是否被声明为内部或私有,但它是公共的。为什么将 TimerReset 声明为公开是不好的?
我错过了什么,或者这是可以忽略的东西?
感谢您提供任何意见!
以下是导致此警告的代码摘录:
namespace Company.App.Thing
{
public partial class Page : XtraPage
{
public delegate void TimerResetDelegate(object sender, EventArgs e);
private TimerResetDelegate _timerReset;
public Page()
{
InitializeComponent();
}
public TimerResetDelegate TimerReset
{
set
{
if (null != (_timerReset = value))
{
checkBox.Click += new EventHandler(_timerReset);
textField.Click += new EventHandler(_timerReset);
textField.KeyDown += new KeyEventHandler(_timerReset);
TimeField.Click += new EventHandler(_timerReset);
TimeField.KeyDown += new KeyEventHandler(_timerReset);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以抑制 .codeanalysislog.xml 和 .lastcodeanalysisuccceeded 在构建时被放到我的输出目录中?
我正在创建一个.Net Standard 2.0 Nuget包,并且我想对该版本执行静态代码分析。但是,当我添加Microsoft.CodeAnalysis.FxCopAnalyzers程序包时,它将成为运行时依赖项,因此任何引用我的Nuget程序包的项目也都将安装分析器。我认为调用代码应该解决这些问题。
无论如何,有什么办法可以防止这种依赖性被强制执行?
有关如何使此错误消息消失的任何想法?
无法运行进程E:\ Program Files\Microsoft FxCop 1.36\FxCop.exe\FxCopCmd.exe/forceoutput/gac/ignoregeneratedcode /f:\Sacog\bin\Debug\Sacog.dll/out:05A1B22A-DE6E-49ae-AA30- DC52A074EF22\fxcop-result.xml:找不到文件
例如,标识符如iPhone.当我运行代码分析时,它给了我这个错误:
CA1709:Microsoft.Naming:通过将其更改为"I"来更正名称空间名称"iPhone.Example"中的"i"的大小写.
我尝试添加一个条目CustomDictionary.xml如下:
<Words>
<Recognized>
<Word>iphone</Word>
</Recognized>
</Words>
Run Code Online (Sandbox Code Playgroud)
然后它仍然给了我同样的错误和一个,如下:
CA1702:Microsoft.Naming:名称空间名称"iPhone.Example"中的复合词"iPhone"作为离散术语存在.如果您的用法是单字,请将其称为"iphone".
然后我添加了一些规则如下:
<Compound>
<Term CompoundAlternate="IPhone">iphone</Term>
</Compound>
<DiscreteExceptions>
<Term>iphone</Term>
</DiscreteExceptions>
<Acronyms>
<CasingExceptions>
<Acronym>iPhone</Acronym>
</CasingExceptions>
</Acronyms>
Run Code Online (Sandbox Code Playgroud)
但它没有任何区别.反正有没有添加这种例外?
提前致谢.
我正在编写一个库而不是从EventArgs派生中返回一个字节数组,它说我应该返回类似IList或ReadOnlyCollection的东西.
通常情况下,我会全力以赴,但大多数现有.NET Framework使用字节数组而不是通用列表接口.
因此,如果我使用IList然后在访问eventargs时,如果客户端想要调用File.WriteAllBytes,则他或她必须这样做using System.Linq;并调用ToArray扩展方法以字节数组的形式获取IList.当然还有其他方法可以做到这一点,但这是最优雅和典型的.
这个库的客户端总是希望事物以字节数组的形式存在,以便它们与框架的其余部分很好地连接.
此外,优化可能会在这里发挥作用.有可能需要操作大量字节,因此必须重新复制整个列表,只是为了以字节数组的形式获取它,每次都可能减慢速度.
最后,这简直令人不快.如果客户端总是想要一个字节数组,那么为什么不给它们呢?框架设计指南在这种情况下不适用吗?你会怎么做?
我有一台安装了Visual Studio 2008和Visual Studio 2010 Professional 的Windows 7 64位计算机(仅限C#).
现在我想要FxCop.我首先看到我们应该安装适用于Windows 7和.NET Framework 4的Microsoft Windows SDK,所以我想这样做,但是它给了我错误并说安装失败了,请在文件夹路径中查找某些HTML页面中的更多详细信息甚至不存在:
安装"Microsoft Windows SDK for Windows 7"产品时报告了以下错误:有关详细信息,请参阅Samples\Setup\HTML\ConfigDetails.htm文档.
所以有两个问题:
在应用程序中,我们可以将报告输出为csv文件并加载它,类似于以下代码:
Process.Start("C:\MyReport.csv") ' Not real path
Run Code Online (Sandbox Code Playgroud)
运行代码分析时,会产生以下错误:
CA2122不要将具有链接需求"Form.Function(Definition)"调用的方法间接暴露给具有LinkDemand的"Process.Start(String)".通过进行此调用,'Process.Start(String)'间接暴露给用户代码
我已经看到用某个地方来标记装配SecurityTransparentAttribute,这是否只是压制了消息?如果是这样,这不是我想要的.是否有另一种打开文件的方法可以绕过这个消息而不会抑制它?如果我现在不能在其他任何地方使用Excel,我最好还是避免使用Excel自动化.
想法?
我很难说服FxCop 10.0来分析引用AutoMapper的程序集.
我创建了一个简单的类库,通过NuGet引用了AutoMapper,并添加了以下代码:
using System;
namespace ClassLibrary4
{
public class Class1
{
public void Foo()
{
AutoMapper.Mapper.CreateMap<Obj1, Obj2>()
.ForMember(x => x.Name, opt => opt.Ignore());
}
}
public class Obj1
{
public string Name { get; set; }
}
public class Obj2
{
public string Name { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用FxCop 10.0通过命令行分析程序集,并收到消息:
无法加载C:\ Users\inelson\Documents\Visual Studio 2013\Projects\ClassLibrary4\ClassLibrary4\bin\Debug\ClassLibrary4.dll.
注意:找不到一个或多个引用的程序集.使用'/ directory'或'/ reference'开关指定其他程序集引用搜索路径.
未解决的参考是System.Core版本2.0.5.0.
为了隔离问题,我删除了.ForMember方法调用,将Foo()简单地删除:
public void Foo()
{
AutoMapper.Mapper.CreateMap<Obj1, Obj2>();
}
Run Code Online (Sandbox Code Playgroud)
和FxCop 10.0现在愉快地分析组装!
使用.ForMember方法导致FxCop分析失败的原因是什么?
请注意,我遇到与.NET Framework版本4.0,4.5或4.5.1以及AutoMapper 3.0.0和3.1.0相同的行为.