我想在我的代码中找到所有递归调用.
如果我在Visual Studio中打开文件,我会在编辑器的左侧看到"递归调用"图标. 
我想检查这些电话的整个解决方案.
我使用Resharper命令行工具和VS的加载项Resharper - 代码检查没有运气,这个规则不适用于他们的规则集.
有什么办法可以检查整个解决方案 - 我真的不想打开每个文件并检查那个蓝色的"递归调用"图标:)
编辑:我对单级递归很感兴趣
在哪里可以禁用Visual Studio 2017中的实时代码分析?每次我启动解决方案时都会弹出。我不需要这个:
我遵循了Microsoft的此支持文档,但是取消选中“启用完整解决方案分析”似乎对实时代码分析没有影响。然后,我找到了Visual Studio 2012的解决方案,但也没有任何运气。
因此,在我看来,实时代码分析是完全不同的事情,无法通过完整的解决方案分析来管理。(重新)启动解决方案后,它立即作为后台进程任务运行。无论如何,我该如何摆脱呢?
我的前缀是说我理解Code Analysis和StyleCop都是指导原则,很多人选择忽略这些.但话说回来,我想看看这两条规则的普遍共识是什么.
规则CA1500表示不要使参数名称和私有字段名称相同.
另一方面,规则SA1309表示不要为成员添加下划线或"m_"作为前缀.
这使我们几乎没有选择区分私有支持字段与其相应的参数.拿这些例子.
SA1309抱怨:
class SomeClass
{
int _someField;
public SomeClass(int someField)
{
this._someField = someField;
}
}
Run Code Online (Sandbox Code Playgroud)
CA1500抱怨:
class SomeClass
{
int someField;
public SomeClass(int someField)
{
this.someField = someField;
}
}
Run Code Online (Sandbox Code Playgroud)
我有什么选择?我不想创建私有支持字段PascalCase,因为这是公共字段/属性的(我相信相当普遍的)约定.而且我不想重命名其中一个,只是为了解决歧义.
所以我留下了上面两个中的一个,这将要求我压制其中一个SA/CA规则.
你们通常做什么?更重要的是,这些规则的作者认为你应该做些什么(因为它们都没有在他们的文档中提供替代解决方案)?
我有一个调用服务时使用的函数.在调用服务之前,它将创建一个日志条目:
protected TResult CallService<TService, TResult>(TService service,
Expression<Func<TService, TResult>> functionSelector)
{
Logger.LogServiceCall(service, functionSelector);
return functionSelector.Compile()(service);
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2010代码分析器通知我不应在以下消息中使用嵌套类型:
CA1006:Microsoft.Design:考虑一种设计,其中'ServiceManager.CallService <TService,Result>(TService,Expression <Func <TService,TResult >>)'不嵌套泛型类型'Expression <Func <TService,TResult >>' .
虽然我可以简单地为此条目创建抑制规则,但是是否存在可以阻止显示此类警告的替代方法?
希望提高相当大的Python项目的质量.我对PyLint给我的警告类型感到满意.但是,它们太多而且难以在大型组织中执行.此外,我认为某些代码在下一个bug可能出现的地方比其他代码更具关键性/敏感性.例如,我想花更多的时间验证100个模块使用的库方法,而不是2年前最后一次触及的脚本,可能不会用于生产.了解经常更新的模块也很有趣.
是否有人熟悉Python工具或其他有助于此类分析的工具?
我正在尝试使用Microsoft.Bcl.Async和代码分析,但是当我运行代码分析时,我得到一个或多个错误.
我正在使用Visual Studio 2012和Update 2.
这对我来说很容易重现:
.Net 4.References然后选择Manage NuGet Packages...Online并async在Search Online框中键入.Async for .Net Framework 4 ....点击Install并接受所有问题.Main()一行说:TaskEx.Delay(1000);和ausing System.Threading.Tasks;Enable Code Analysis on Build.我收到两个代码分析错误:
CA0052运行代码分析时出错CA0052:未选择任何目标.[错误和警告](全球)
CA0055运行代码分析CA0055时出错:无法加载ConsoleApplication2.exe.读取模块"ConsoleApplication2"时遇到以下错误:无法解析成员引用:[Microsoft.Threading.Tasks,Version = 1.0.12.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a] System.Threading.Tasks.TaskEx :: Delay.[错误和警告](全球)
我为其他测试程序得到了不同的代码分析错误.我试过的基本Windows窗体应用程序给了我:
CA0001错误运行代码分析CA0001:读取模块"AsyncForNet4"时遇到以下错误:无法解析成员引用:[Microsoft.Threading.Tasks,Version = 1.0.12.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a] System.Threading. Tasks.TaskEx ::延迟.[错误和警告](全球)
两个问题:
在我正在研究FxCop的项目中,我向Windows窗体设计器生成的InitializeComponent()方法显示了很多(我的意思是400多个)错误.大多数错误只是标签的Text属性的赋值.
我想在源代码中禁止这些方法,因此我将FxCop生成的抑制代码复制到AssemblyInfo.cs中,但它不起作用.
这是FxCop复制到剪贴板的属性.
[module: SuppressMessage("Microsoft.Globalization",
"CA1303:DoNotPassLiteralsAsLocalizedParameters",
Scope = "member",
Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]
Run Code Online (Sandbox Code Playgroud)
任何人都知道正确的属性来压制这些消息?
PS:我使用的是Visual Studio 2005,C#,FxCop 1.36 beta.
code-analysis fxcop initializecomponent suppression visual-studio
使用带有C#可选参数的代码分析(或fxCop)时,您可以收到CA1026的警告.对此的简短原因1不是使用默认值来提供所有参数.
下面的声明正确地生成了此警告
public Color GetColor(bool red, bool blue = true, bool green = true)
Run Code Online (Sandbox Code Playgroud)
但是,有一种情况是您无法使用默认值提供所有参数,这就是扩展方法.因此,下面的声明会因为第一个参数而生成警告:
public static bool ValidateRules(this string s, Rules rules = Rules.Default)
Run Code Online (Sandbox Code Playgroud)
编译器不允许您在this参数上指定默认值,因此只有两个解决方案是:
我想确认这是否是PMD的错误?如果是,我如何提交票证.
public static void main(final String[] args) {
for (final String string : args) {
string.getBytes(); //UR Anomaly
}
for (int i = 0; i < args.length; i++) {
args[i].getBytes();
}
}
Run Code Online (Sandbox Code Playgroud)
第1-3行被标记为UR异常,而重写它以使用局部变量进行迭代很好.
想要消除尽可能多的PMD违规,但不得不求助于旧的循环结构作为一种解决方法.
虽然有争议,但我不希望禁用此规则,因为我发现DD,并且DU异常标记为有用.
我正在寻找一组.cs文件来查看哪些调用a的Value属性Nullable<T>(查找所有引用).例如,这将匹配:
class Program
{
static void Main()
{
int? nullable = 123;
int value = nullable.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
我发现了Roslyn并查看了一些样本,但其中许多已经过时且API非常庞大.我该怎么做呢?
解析语法树后我陷入困境.这是我到目前为止:
public static void Analyze(string sourceCode)
{
var tree = CSharpSyntaxTree.ParseText(sourceCode);
tree./* ??? What goes here? */
}
Run Code Online (Sandbox Code Playgroud)