标签: static-code-analysis

你希望FxCop/Gendarme有什么规则?

您希望将哪些可定义的静态代码检查规则添加到FxCop和/或Gendarme中?

您为什么希望看到添加规则,例如有什么好处?

你的规则如何实施?

fxcop static-code-analysis gendarme

7
推荐指数
1
解决办法
814
查看次数

处理对象的代码分析友好方式

作为Visual Studio 2010(主要是C#4.0)开发标准的一部分,我们启用了代码分析.当我正在审查最近为新项目提交的代码时,我看到了很多

CA2000:Microsoft.Reliability:在方法'XYZ'中,对象'ABC'不沿所有异常路径放置.在对所有引用超出范围之前,调用System.IDisposable.Dispose对象'ABC'.

警告.问题是,我所做的一切似乎都没有消除警告 - 我花了几个小时搜索网络并尽我所能.

首先,让我明确一点,我不是在谈论将一个简单的使用块放入正确处理局部变量 - 这不是问题.在我的情况下,当对象由方法返回或分配给方法中的另一个对象时,会出现这些警告.

这是一个代码示例,其中包含四个此类警告:

public void MainMethod()
{
    var object1 = CreateFirstObject();    // Warning here
    var object2 = CreateSecondObject();   // Warning here

    SomeCollectionProperty.Add(object1);
    SomeCollectionProperty.Add(object2);
}

private SomeObject CreateFirstObject()
{
    var theObject = new SomeObject()      // Warning here
    {
        FirstProperty = "some value",
        // ...
    };

    return theObject;
}

private SomeOtherObject CreateSecondObject()
{
    var theObject = new SomeOtherObject() // Warning here
    {
        FirstProperty = "a different value",
        // ...
    };

    return theObject;
}
Run Code Online (Sandbox Code Playgroud)

我已经评论了警告发生的地方. …

.net c# code-analysis idisposable static-code-analysis

7
推荐指数
1
解决办法
4914
查看次数

为什么Cppcheck没有找到这个明显的数组越界错误?

我安装了Cppcheck工具,用于我的C++项目的静态代码分析,并感觉它表现不佳.例如,任何人都可以告诉我为什么 Cppcheck无法在以下代码中找到数组越界错误?

void f(int c) { 
    char *p = new char[10]; 
    p[c] = 42; 
} 

void g() { 
    f(100); 
} 
Run Code Online (Sandbox Code Playgroud)

有一个在线演示,可以使用Cppcheck方便地检查此代码.所有它提到的是第4行的内存泄漏,没有潜在缓冲区溢出的迹象.

c++ code-analysis static-code-analysis cppcheck

7
推荐指数
2
解决办法
3717
查看次数

如何使用 Visual Studio 2019 为解决方案中的多个项目指定自定义代码分析规则集?

我有一个自定义代码分析规则集,我想将其应用于解决方案中多个项目的所有配置,但不知道如何实现。

明确地说,我正在寻找一种方法(如果有的话)在一个步骤中执行此操作,而不是从 IDE 编辑每个项目的属性。

到目前为止,我找到了这个指导:https : //docs.microsoft.com/en-us/visualstudio/code-quality/how-to-configure-code-analysis-for-a-managed-code-project?view=vs -2019#specify-rule-sets-for-multiple-projects-in-a-solution

但这似乎并不正确。在 Visual Studio 2019 中,如果我转到“分析”>“配置代码分析”>“解决方案”,我会看到一个带有消息的空白属性页:

注意:此属性页已被弃用,将在未来的产品版本中删除。

还有另一种方法可以做到这一点吗?我有很多项目:(

谢谢。

solution visual-studio static-code-analysis roslyn roslyn-code-analysis

7
推荐指数
2
解决办法
2832
查看次数

为什么颤振分析与飞镖分析不同?

我正在学习 Flutter 并且我已经创建了一个简单的 Android 应用程序。我想遵循最佳实践,所以我还创建了一个analysis_options.yaml

include: package:pedantic/analysis_options.yaml

linter:
  rules:
    public_member_api_docs: true
Run Code Online (Sandbox Code Playgroud)

Android Studio 根据analysis_options.yaml并报告违规情况正确更新其代码分析设置。

问题是,当我运行时,flutter analyze它不报告任何以下内容public_member_api_docs

flutter analyze
Running "flutter pub get" in flutter-course...         514ms
Analyzing flutter-course...                                 

   info • Unused import: 'package:places/ui/screen/sight_list_screen.dart' • lib/main.dart:2:8 • unused_import
   info • Omit type annotations for local variables • lib/ui/screen/visiting_screen.dart:166:5 • omit_local_variable_types
Run Code Online (Sandbox Code Playgroud)

但是当我运行dart analyze它时会报告大量警告:

dart analyze
Analyzing flutter-course... 2.1s

   info • Document all public members at lib/constants.dart:5:16 • (public_member_api_docs)
   info • Document all public …
Run Code Online (Sandbox Code Playgroud)

static-code-analysis dart dart-analyzer flutter linter

7
推荐指数
1
解决办法
740
查看次数

FxCop或StyleCop中的自定义静态代码分析规则?

如果编写自己的静态代码分析规则(对于C#代码),使用StyleCop和FxCop有什么优缺点?

某种类型的分析比另一种更适合吗?或者是两个在源代码上运行而另一个在编译程序集上运行的区别?

c# fxcop stylecop static-code-analysis

6
推荐指数
1
解决办法
1203
查看次数

Code Analysis是否支持为混合语言拼写检查定义两种语言?

使用JoséAdanhttp://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/f6dec8c4-9752-4a9b-82fe-0822808fd386/提供的提示,我能够让代码分析进行拼写检查巴西葡萄牙语.

在巴西,在类型和成员名称上混合葡萄牙语和英语是一种常见的做法.我也在源自欧洲的代码中看到了其他语言的这种做法.

所以我想要做的是启用两种语言.

我没有找到任何东西,我在周围搜索,我做了一些实验,如

<CodeAnalysisCulture>en-US;pt-BR</CodeAnalysisCulture>
Run Code Online (Sandbox Code Playgroud)

<CodeAnalysisCulture>en-US&</CodeAnalysisCulture>
<CodeAnalysisCulture>pt-BR&</CodeAnalysisCulture>
Run Code Online (Sandbox Code Playgroud)

都没有奏效.第一个打破了编译错误,第二个使用了最后定义的语言.

我几乎可以肯定Code Analysis不支持这个,但作为最后的手段,我问:

Code Analysis是否支持为混合语言拼写检查定义两种语言?

PS:我已经知道自定义词典了.这是我的备份计划.

code-analysis fxcop visual-studio-2008 static-code-analysis

6
推荐指数
1
解决办法
210
查看次数

静态和动态代码分析

我发现了关于这个主题的几个问题,并且所有这些问题都有很多参考,但我仍然没有清楚的想法,因为大多数参考文献都是关于具体工具而不是关于分析的一般概念.因此我有一些问题:

关于静态分析:1.我想有一个参考,或者总结哪些技术是成功的,现在更具相关性.2.他们真正可以做些什么来发现错误,我们可以做一个总结,还是取决于工具?

关于符号执行:1.哪里可以包含符号执行?我想根据方法,我想知道它们是动态分析,还是静态和动态分析的组合,如果可以确定的话.

我找到了区分工具中两种不同技术的问题,即使我认为我知道理论上的差异.

我实际上是在提前与C合作

code-analysis dynamic-analysis static-code-analysis

6
推荐指数
1
解决办法
6992
查看次数

如何清理和验证用户输入以通过Checkmarx扫描

我有一个端点,从用户获取一个String,如下所示.

@GET
@Path("/{x}")
public Response doSomething(@PathParam("x") String x) {
    String y = myService.process(x);
    return Response.status(OK).entity(y).build();
}
Run Code Online (Sandbox Code Playgroud)

Checkmarx抱怨这个元素的值然后"流经代码而没有经过适当的消毒或验证,并最终在方法doSomething中显示给用户"

然后我尝试了这个:

@GET
@Path("/{x}")
public Response doSomething(@PathParam("x") String x) {
    if (StringUtils.trimToNull(x) == null || x.length() > 100) { 
        throw new RuntimeException(); 
    }
    x = x.replace("'", "").replace("`", "").replace("\\", "").replace("\"", "")
    String y = myService.process(x);
    y = y.replace("'", "").replace("`", "").replace("\\", "").replace("\"", "")
    return Response.status(OK).entity(y).build();
}
Run Code Online (Sandbox Code Playgroud)

但它仍然抱怨并认为这是一个高度严重的漏洞.

如何正确消毒或验证以满足Checkmarx的要求?

java security code-analysis static-code-analysis checkmarx

6
推荐指数
1
解决办法
7966
查看次数

Visual Studio 2015代码分析与FxCopCmd.exe的区别

我最近安装了Visual Sudio 2015,并且能够使用以下命令运行解决方案的代码分析:

msbuild.exe MySolution.sln /p:RunCodeAnalysis=true
Run Code Online (Sandbox Code Playgroud)

在哪里/p:RunCodeAnalysis=true执行代码分析.实际上这会调用位于的FxCopCmd.exe

C:\Program Files(x86)\Microsoft Visual Studio 14.0\Team Tools\Static AnalysisTools\FxCop\FxCopCmd.exe

代码分析旨在取代FxCop,但实际上代码分析自身执行FxCopCmd.exe

也许我想念一些东西,但VS Code Analysis和FxCop有什么区别?

c# msbuild fxcop static-code-analysis visual-studio-2015

6
推荐指数
1
解决办法
6874
查看次数