标签: code-analysis

代码生成器生成文件的代码分析 - 如何抑制警告?

我们对所有源文件运行代码分析.我们的一个源文件是Linq-To-SQL生成的文件,我们无法控制生成的输出.生成的代码正在生成我想要抑制的代码分析警告.有没有什么办法可以在代码生成的文件中抑制CA警告,这些警告不涉及在代码本身中创建属性和/或编译指示(每次生成文件时都会被覆盖)?

c# code-analysis

5
推荐指数
1
解决办法
4500
查看次数

全局禁止代码分析警告CA1704跨项目或程序集?

我有几个CA1704:IdentifiersShouldBeSpelledCorrectly我想要压制的代码分析警告.基本上,它们指的是被认为拼写错误的公司名称.

公司名称是我项目中几个名称空间的一部分,为了抑制所有警告,我需要在GlobalSuppressions文件中添加大量的抑制.有没有办法在GlobalSuppressions文件的一行中禁止所有这些警告,以防止我的GlobalSuppressions文件变得过于混乱?

.net code-analysis suppression

5
推荐指数
1
解决办法
1945
查看次数

分析FxCop /代码分析警告CA1506:avoidExcessiveClassCoupling

我正在为C#类获取Visual Studio代码分析警告CA1506.它说,''FormMain'与来自25个不同命名空间的93种不同(非IComponent)类型相结合.重写或重构此类的方法以减少其类耦合,或考虑将某些类的方法移动到其他一些类型高于95的类耦合表明可维护性差,95到80之间的类耦合表明中等可维护性,低于80的类耦合表明良好的可维护性.

我的问题很简单,我在哪里可以看到FormMain所有类型的列表,所以我可以更好地了解情况?

谢谢.

c# code-analysis fxcop

5
推荐指数
1
解决办法
3885
查看次数

用于增量静态分析代码的工具?

是否有任何免费的工具允许对代码进行增量静态分析(对于SVN,最好是Git)?目前我们正在使用Sonar(2.12我认为?)但问题是需要分析我们项目中所有代码的时间是40-60分钟.我们需要增加它,因为我们有几个分支在不同的子项目上工作.

这就是为什么我正在寻找一种工具,可以只从最新的提交(据我所知的Sonar不支持)或仅在过去X小时/天/之内修改的代码分析代码.

我已经找到了Sonar的Cutoff Plugin,据说可以做我想要的(只检查文件中某个日期之后修改过的代码)但是:

  1. 我仍然需要检查它是否有效
  2. 检查它是否支持动态日期更改(因此它只会考虑来自最后一天的代码而不是我必须每天手动更改排除日期).
  3. 它似乎没有得到很好的支持(2010年的最后一次更改,它仍然是版本0.1)

如果它只检查上次提交的代码,那将是完美的,但我还没有看到任何地方.

另外作为一个附带问题:在每次提交(即使用哈德森声纳插件)之后运行分析是好事还是应该避免?在我的上一个团队,我们有声纳这样运行,如果我们"破坏它"我们会得到一个即时电子邮件(添加了代码的主要/关键).这非常方便,因为我们知道谁有错(基于提交的信息).或者我们应该更少地分析它(让我们说每周一次)?在那种情况下,我将不得不检查Sonar是否能够说出谁犯了有问题的代码.

svn code-analysis static-analysis sonarqube

5
推荐指数
1
解决办法
1394
查看次数

在python中强制执行副作用

是否有一个工具可以让您将函数/方法注释为"纯",然后分析代码以测试所述函数/方法是否是无副作用的?

python code-analysis functional-programming

5
推荐指数
1
解决办法
590
查看次数

VS2011代码分析

我最近安装了VS2011测试版,以了解微软在其最新版本的编译器中实现的新C++ 11功能.

我回去使用VS2010时遇到了意想不到的问题.我在VS2010中打开了一个Windows SDK 7.1示例项目.

现在,当我在VS2010中构建时,我得到以下输出,表示正在执行代码分析工具(看似在编译之后,但在链接之前)

1>------ Rebuild All started: Project: MFCaptureToFile, Configuration: Debug Win32 ------
1>  winmain.cpp
1>  capture.cpp
1>  Running Code Analysis for C/C++...
1>capture.cpp(112): error C2220: warning treated as error - no 'object' file generated
1>c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\mediafoundation\mfcapturetofile\capture.cpp(105): warning C6309: Argument '3' is null: this does not adhere to function specification of 'IMFAttributes::GetAllocatedString'
1>c:\program files\microsoft sdks\windows\v7.1\samples\multimedia\mediafoundation\mfcapturetofile\capture.cpp(105): warning C6387: 'argument 3' might be '0': this does not adhere to the specification for the function 'IMFAttributes::GetAllocatedString': Lines: 98, 103, …
Run Code Online (Sandbox Code Playgroud)

c++ code-analysis visual-studio-2012

5
推荐指数
1
解决办法
1272
查看次数

CS1684引用类型System.Windows.Input.ICommand声称它在'xxx'中定义但无法找到

我试图开始使用VS 2012而不是VS 2010,但是在安装VS 2012和.Net 4.5之后.我在VS 2010中遇到代码分析错误说在读取模块'xxx_Accessor'时遇到以下错误:无法解析类型引用:[System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089] System.Windows. Input.ICommand.

我猜这与.Net 4.5移动了ICommand接口的位置有关,但有没有解决方案,以便代码分析再次运行?我已经尝试将ignorestrongassemblynames添加到测试项目的项目文件和正在测试的项目中,但这没有用.

code-analysis visual-studio-2010 icommand .net-4.5 visual-studio-2012

5
推荐指数
1
解决办法
2530
查看次数

代码分析改进

静态CA使解决方案构建变得更慢.在我的情况下>比没有CA慢2倍.我们可以禁用它,但这是失去力量的坏决定.所以,我们能做些什么?

首先让我们看看CA的工作原理.

你建立解决方案.在每个项目构建之后,msbuild编译目标fxcopcmd.exe被调用,其中包含应该分析的程序集的路径.fxcopcmd.生成由VS(或可能是输出流)使用的CA xml日志.fxcopcmd.exe加载程序集(快速)并同步分析它,因此只加载一个CPU而3个(在我的情况下)什么都不做.只有在CA完成后,才会构建项目依赖关系链中的下一个项目.

因此,CA中的弱点是我们可以改进它 - 强制它并行工作以使用所有CPU.

我看到这样的解决方案

要制作将从MSBUILD中获取参数的假fxcopcmd.exe,请记住它并立即向msbuild报告一切正常并且没有错误(通过CA xml.log或成功文件,或者可能是流..).所以MSBUILD将构建下一个项目,那时我们将使用保存的参数调用真正的fxcopcmd.exe ...如果MSBUILD将在下一个项目中调用fxcopcmd.exe - 我们将再次调用fxcopcmd.exe ...所以会有很少有加载所有CPU的进程.真正的fxcopcmd.exe完成后我们可以调用我们的MSBUILD目标,它将从microsoft.common.targtets只调用CA目标而没有编译,我们的假fxcopcmd.exe会立即报告结果(CA在那时完成,我们有日志)到MSBUILD-VS.

你怎么看?这会加速CA吗?为什么Microsoft没有在CA中创建这样的人员并且只使用一个CPU?

.net msbuild code-analysis visual-studio static-code-analysis

5
推荐指数
1
解决办法
1718
查看次数

在VC++中确定未初始化的变量

我有这段代码,

#include <iostream>

void foo(int *a)
{
    std::cout<<*a<<std::endl;
}

int main()
{
    int i;
    foo(&i);
}
Run Code Online (Sandbox Code Playgroud)

很明显,正在使用未初始化的变量.

我已经尝试/ RTCu以及依赖于错误C4700,但对于上面的代码,编译器没有将此标记为错误.

我也试过运行代码分析,它报告为代码片段没有问题.

那么在我们的源代码中确定未初始化变量的可靠方法是什么?

我知道valgrind这里有一个很棒的工作,但它不是我的选择,因为我有很多调用Windows API和MFC.

c++ code-analysis initialization visual-c++ visual-studio-2012

5
推荐指数
1
解决办法
370
查看次数

如何获取一个程序的过程间控制流程图并使用llvm对其进行数据流分析?

在llvm中,我知道已经构造了每个函数的CFG(控制流图),并且CFG由函数的基本块之间的关系表示.BUt我想遍历一个程序的全局CFG,其中包含llvm中的许多函数.如何获得一个程序的过程间CFG,然后对其进行数据流分析?

compiler-construction code-analysis static-analysis llvm control-flow-graph

5
推荐指数
1
解决办法
1193
查看次数