标签: code-analysis

退出痛苦区 - NDepend

我刚刚通过NDepend运行我的一个项目,报告将我的组件放在痛苦区域的角落.我只是想知道这是否应该让我担心.

疼痛区真正意味着什么?这不是说有很多耦合,事情不容易改变.

我最近删除了很多接口并密封了很多类,因为我不希望用户扩展API(仅在某些地方).它是com对象的.NET包装器,因此用户不需要扩展任何东西.

有什么好办法让我走出痛苦的区域?

谢谢

.net code-analysis ndepend

2
推荐指数
1
解决办法
539
查看次数

如何在本地暂时禁用代码分析?

在这里,我们在本地和生成服务器上运行一组 Visual Studio 2008 的 CA 规则。为了签入,我们的 CA 规则必须与服务器策略相匹配。但是,我正在研究包含多个项目的大型解决方案。在启用 CA 规则的情况下,以发布模式构建项目需要很长时间,但这在创建或编辑单元测试时是必需的。这使得使用单元测试成为一项痛苦的任务。我想要做的是有一个快速的方法(比通过所有项目禁用 CA 更快)在开发过程中禁用 CA 规则,然后在签入之前重新启用它们。有谁知道这是否可能?

code-analysis visual-studio-2008

2
推荐指数
1
解决办法
1803
查看次数

TFS 2010更改了各个代码部分的历史记录

前段时间我回忆起一个工具的早期发布视频演示,该工具允许(从Visual Studio内部)检查一段代码的历史记录.例如,右键单击某个方法并选择"查看历史记录",然后查看该方法的更改时间.谁能回忆一下这可能是什么产品?

version-control tfs code-analysis

2
推荐指数
1
解决办法
484
查看次数

分析不安全代码片段代码的好工具是什么?

我正在寻找一些可以对PHP脚本进行基本测试的工具.

这次我对复杂的测试解决方案不感兴趣,需要为每一段代码编写测试.我对功能测试既不感兴趣.

我期望这个工具做的是指出可能导致无效使用的代码片段:

  1. 变量;
  2. 函数参数;
  3. 函数返回值.

例如,无效的使用将使用NULL作为对象或数组,或者将boolean作为需要为数组或对象(或NULL)的arguent传递.

此外,它还可能会检查是否使用了"良好做法",即它可能会警告使用它是不安全的if ( $condition ) $doSomething;,如果它找到类似的东西.


为了说明该工具应该检测为"不安全"的代码片段,这里有几个例子.

在这种情况下,$filter可能是NULL,但它用作数组:

<?php
    function getList(array $filter = null) { 
        $sql = '...';
        // ...
        foreach ( $filter as $field => $value ) {
            // ...
        }
        // ...
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,$res可能是false,但它被用作resource.

<?php
    $res = mysql_query('...');
    while ( $row = mysql_fetch_assoc($res) ) {
        // ...
    }
    mysql_free_result($res);
Run Code Online (Sandbox Code Playgroud)

这里是相应的"安全"代码片段:

// $filter is used only if it's non-empty; as list …
Run Code Online (Sandbox Code Playgroud)

php code-analysis

2
推荐指数
1
解决办法
341
查看次数

分析面向对象代码的想法

如果我能做魔术,我会想出一个C#代码分析工具; 我们称之为XYZ.以下是您可以输入的一些代码示例XYZ:

public class MyClass
{
    private int myInt;

    [Functional]
    public int GetDoubleOfMyInt()
    {
        return 2*myInt;
    }

    [SideEffect: myInt] 
    public void IncrementMyInt()
    {
        myInt++;
    }
} 
Run Code Online (Sandbox Code Playgroud)

注意两种方法的标签.XYZ将验证它GetDoubleOfMyInt()确实是纯功能的(在某种意义上它只是计算一个整数)并且IncrementMyInt具有赋值的副作用myInt.如果你换了两个标签XYZ会发出两个错误.

我的问题:1.XYZ确实存在重新安排的事情吗?2.如果你被要求实施它,你会从哪里开始?

c# oop code-analysis

2
推荐指数
1
解决办法
149
查看次数

在C中,"格式参数也可以表达"是什么意思?

K&R书中,它在指针章节中显示了以下printf语句:

printf((argc > 1) ? "%s " : "%s", *++argv);
Run Code Online (Sandbox Code Playgroud)

我不明白这一行 - 为什么这里有两个%s?

谢谢!

c code-analysis

2
推荐指数
1
解决办法
175
查看次数

我应该对Visual Studio中的代码分析合规性有多严格?

在为我正在开展的一个小项目中使用Code Analysis之后,我想知道在解析代码符合分析时我应该有多严重.

我知道我可以为此禁止警告,但对我来说,在某种程度上抑制警告是一个警告(没有双关语意图......"FXCop").

示例警告:

不要在意外位置引发异常'CustomObject.Equals(object)'会创建类型为'ArgumentException'的异常.在这种方法中不应该提出例外.如果可能引发此异常实例,请更改此方法的逻辑,以便不再引发异常.

扔这个的原因......

CustomObject.Equals(object)可能会尝试比较CustomObject和FooBarObject ...它们甚至不是同一类型,所以在这个实例中,我应该抛出异常,还是只返回false?


一般来说,我是否应该真正肛门(因为想要一个更好的词)使我的代码绝对合规,或者我会遇到需要警告抑制的情况?

warnings code-analysis fxcop standards-compliance visual-studio

2
推荐指数
1
解决办法
373
查看次数

Android Studio - “未执行任何分析”

在此处输入图片说明

我有这个奇怪的问题。代码分析和错误未显示在特定文件中,但它们在其他文件中工作正常。图标“OFF”出现在绿色复选标记所在的位置。

我检查了省电模式,它被禁用了。

如何重新开启代码分析?

ide code-analysis intellij-idea android-studio

2
推荐指数
1
解决办法
727
查看次数

Sonarqube 未注册任何 c# 问题

可能与此问题类似,但由于先前版本已经回答了该问题,因此我会为其打开一个新问题。

尽管我有意将代码气味放入我的源代码中,但 sonarqube 并未发现任何问题。生成分析报告 ( 101 KB ),压缩并成功上传。从扫描仪端执行是成功的。

开发配置:

  • IDE:Visual Studio Enterprise 2015 v14.0.25425.01 更新 3
  • 框架:v4.6.01055
  • 语言:C# 6

构建配置:

  • 主机:Docker over Debian ( v4.4.0.38 )
  • Sonarqube:v6.1优于 PostgreSQL v9.6.0
  • C#插件v5.3.2
  • 扫描:扫描仪SonarQube V2.6.1
  • 引擎:mono v4.6.1.0,XBuild v14.0
  • CLR:v4.0.30319.42000

声纳扫描仪结果:

INFO: Scanner configuration file: /opt/sonar-scanner-2.6.1/conf/sonar-scanner.properties
INFO: Project root configuration file: /builds/kataik/gitlab_test/sonar-project.properties
INFO: SonarQube Scanner 2.6.1
INFO: Java 1.8.0_92 Oracle Corporation (64-bit)
INFO: Linux 4.4.0-38-generic amd64
INFO: User cache: /opt/sonar-scanner-2.6.1/.sonar/cache
INFO: …
Run Code Online (Sandbox Code Playgroud)

.net code-analysis sonarqube

2
推荐指数
1
解决办法
1548
查看次数

Java:声纳强制构造函数

我们使用声纳进行代码分析。对于这样的课程

public class Car {
  private Engine engine; 

  // getter setter for engine
}
Run Code Online (Sandbox Code Playgroud)

我们收到错误,例如

Non-abstract classes and enums with non-static, private members should explicitly initialize those members, either in a constructor or with a default value.

我们通常使用 Jackson 序列化我们的对象,因此构造函数不会在我们的代码中的任何地方使用。那么为什么我还需要编写构造函数呢?禁用此规则是否有意义? 规则链接

另一件事,如果我更改代码如下

private Engine engine = null;
Run Code Online (Sandbox Code Playgroud)

错误不会被抛出。默认情况下,所有 Java 引用都分配有空值。这条线是在欺骗声纳吗?这应该是声纳中的一个错误吗?

java code-analysis static-code-analysis sonarqube

2
推荐指数
1
解决办法
3974
查看次数