标签: code-analysis

如何为.net编写静态代码分析器

我有兴趣为vb.net编写静态代码分析器,看它是否符合我公司的标准编码指南.请告知我必须从哪里开始.

vb.net code-analysis

5
推荐指数
2
解决办法
722
查看次数

Ndepend和其他自动代码分析器的启示?

从昨天开始,我正在分析我们的一个项目Ndepend(大部分功能都是免费的)以及我使用它的更多,而且我对这类软件(代码分析软件)的真正价值有所怀疑.

让我解释一下,系统根据Rank每个指标构建一个关于系统和类的健康状况的报告.我认为这是一个很好的起点进行修改,但大多数顶级结果都在这里,因为它们在类中有超过100行(我们有大标题,我们确实使用VS注释样式)所以这不是什么大问题.. .传入耦合级别(CA)的数量总是太高,这对于我们经常使用的界面来说几乎是真的...所以此刻我没有看到错误,但NDepend似乎不喜欢它(如果你有改进建议,告诉我,因为我认为没有必要).对于我的大多数接口都太高的儿童数量,这个名为"NOC"的度量标准是一样的...

目前,唯一非常有用的指标是Cyclomatic Complexity ......

我的问题是:你觉得用NDepend这样的自动代码分析器分析代码是否值得?如果是,那么如何过滤我提到的并不能真正显示系统真实健康状况的所有信息?

.net c# code-analysis

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

C++的动态代码分析

是否有一个开源和(相对)简单易用的C++代码动态代码分析工具?

像IBM Purify(内存损坏检测,内存泄漏检测,应用程序性能分析等)

c++ code-analysis

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

VS2010代码分析.为所有类成员抑制消息CA1051:DoNotDeclareVisibleInstanceFields

我有一个像这样的课:

public class Foo
{
    public readonly int A = 1;
    public readonly int B = 2;
}
Run Code Online (Sandbox Code Playgroud)

当我运行内置代码分析工具的VS2010时,我得到两个相同的警告:" 字段"......在其声明类型之外可见,将其可访问性更改为私有并添加属性,具有与字段相同的可访问性目前,提供访问权限 '.

我想为我的类Foo中的所有字段禁止此警告,但我不想用SuppressMessage属性标记每个字段,如下所示:

public class Foo
{
    [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
    public readonly int A = 1;
    [SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
    public readonly int B = 2;
}
Run Code Online (Sandbox Code Playgroud)

我想标记所有类成员,使用如下代码:

[SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields")]
public class Foo
{
    public readonly int A = 1;
    public readonly int B = 2;
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码不起作用,我仍然得到代码分析警告.我该怎么做才能正确?

code-analysis fxcop visual-studio-2010 visual-studio suppressmessage

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

在C#代码中查找未捕获的异常

我想知道是否有一个工具可以使用静态代码分析在C#中找到未捕获的异常?基本上我想选择一个方法A()并想要一个由methodA()抛出的所有异常的列表以及methodA()调用的所有方法.我尝试过ReSharper + Agent Johnson和AtomineerUtils,都失败了这个简单的任务.

这是我的示例代码:

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }

    public int Area()
    {
        CheckProperties();
        long x = Width * Height;
        if (x > 10)
            throw new ArgumentOutOfRangeException();
        return (int) x;
    }

    private void CheckProperties()
    {
        if (Width < 0 || Height < 0)
            throw new InvalidOperationException();
    }
}
Run Code Online (Sandbox Code Playgroud)

该工具应该能够告诉我(以任何形式)方法Area()将抛出ArgumentOutOfRangeException或InvalidOperationException.

.net c# code-analysis static-analysis exception

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

通过流畅的验证来抑制CA1062

我有一个流畅,可扩展的验证助手,如:

Assert.That(aParameter).IsNotNull();
Run Code Online (Sandbox Code Playgroud)

它是可扩展的,因为That方法实际上是通用的(即<T>)并使用隐式类型来返回通用的IAssertCondition <T>对象.IsNotNull实际上是一种扩展方法.

无论如何,使用这种方法验证传递给方法的参数的问题是我得到CA1062警告,指示我在使用之前验证参数,当然,我已经在做了.

我阅读了Eric Smith的帖子(这里)关于使用ValidatedNotNullAttribute来告知FxCop该参数是否正在验证但是我不知道如何使用我所描述的流畅接口来实现这一点.

我的选择是什么,以便代码分析能够认识到上述陈述满足要求并且警告不会出现?

code-analysis visual-studio-2010 static-code-analysis

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

在Visual Studio 11中配置代码克隆

我真的很喜欢VS11的新内置功能来查找"代码克隆",但似乎没有任何方法可以配置它.

一个例子只显示5行或更多的确切克隆.

现在它给出了精确,强,中和弱匹配,看起来它们是10行或更多.如果我可以配置它,它将有助于克隆的工作,它会找到我确信已经多年来切割和粘贴的那些小方法.

更新 以下是Release Preview版本文档中有关如何配置排除生成文件的能力的说明

从代码克隆分析中排除T4模板生成的文件

  1. 将模板放在Visual Studio项目的子目录中.将其命名为GeneratedFiles.

  2. 将新文本文件添加到项目中,并将其名称和扩展名更改为t4Exclusions.codeclonesettings

  3. 更改文件的内容,如下所示:

<CodeCloneSettings> <Exclusions> <File>GeneratedFiles*的.cs</File> </Exclusions> </CodeCloneSettings>

更新 - 08/27/2012我在Code Clone文档中找到了这个,它在早期版本中没有.这是找到长度小于10行的克隆的一种方法.

查找特定代码片段的克隆

1.突出显示方法或get/set定义中的代码片段.

注 - 您可以找到语句的克隆,但不能查找字段,方法或属性签名等声明.

2.在片段的快捷菜单上,选择"在解决方案中查找匹配的克隆".

当您想知道解决方案中是否存在类似的方法或片段时,请使用此方法.

code-analysis static-code-analysis visual-studio-2012

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

插入排序,MergeSort和快速排序的测试用例

我已经实现了(在Java中)Insertion Sort,MergeSort,ModifiedMergeSort和Quick Sort:

ModifiedMergeSort有一个变量用于元素的"绑定".当要排序的元素小于或等于"bound"时,请使用Insertion Sort对它们进行排序.

为什么版本1比版本3,4和5更好?

版本2和6的结果是否真实?

这是我的结果(以毫秒为单位):

Version 1 - Insertion Sort: Run-Times over 50 test runs
Input Size      Best-Case       Worst-Case      Average-Case
N = 10000       14              19              14.96
N = 20000       59              60              59.3
N = 40000       234             277             243.1

Version 2 - Merge Sort: Run-Times over 50 test runs
Input Size      Best-Case       Worst-Case      Average-Case
N = 10000       1               15              1.78
N = 20000       3               8               3.4
N = 40000       6               9               6.7

Version 3 - Merge Sort and …
Run Code Online (Sandbox Code Playgroud)

java sorting testing algorithm code-analysis

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

具有Doxygen的类依赖图

我想为C ++中的大型项目生成类依赖关系图。我正在尝试用脱氧剂。这是示例代码:

class Used {
public:
  void bar();
};

class Base { };

class Derived : public Base {
public:
  void foo(Used*);  // Dependency on class Used
};
Run Code Online (Sandbox Code Playgroud)

这是doxygen生成的协作图:

在此处输入图片说明

很好,但是Derived取决于Used通过method foo,并且我想在图上看到它,像这样:

在此处输入图片说明

不幸的是,doxygen仅在Used与Derived(被用作类成员)聚合时才产生这种依赖性。有没有一种方法可以显示类之间的其他类型的依赖关系?

也许有人可以建议使用其他工具来生成这种依赖关系图?

我尝试使用CppDepend,它确实可以实现我想要的功能,但是不幸的是,它目前在一个非常大的项目中存在一些与依赖项有关的问题(尽管开发团队可以进行交流,并且已经修复了我报告的一些错误)。

c++ dependencies code-analysis static-analysis doxygen

5
推荐指数
0
解决办法
2097
查看次数

是否有一种在Visual Studio之外编辑代码分析规则集的好方法

作为以前的Visual Studio用户,我习惯于在IDE中编辑代码分析(例如,对于FxCop和StyleCop)。该内置编辑器使得它很容易。

我现在正在使用VS Code并尝试做同样的事情。据我所知,VS Code中似乎没有用于处理规则集的任何扩展。看来我唯一的选择是手动编辑XML。

鉴于规则是这样定义的...

<Rule Id="CA2213" Action="Warning" />
Run Code Online (Sandbox Code Playgroud)

如果可以避免的话,我不愿意手动进行编辑。

所以:

  • 我是否错过了会有所帮助的VS Code扩展?
  • 有没有独立的解决方案?
  • 也许是在线编辑器/生成器/向导?

如果没有,我将在此页面上花费大量时间。

c# code-analysis fxcop stylecop visual-studio-code

5
推荐指数
0
解决办法
125
查看次数