我刚刚通过NDepend运行我的一个项目,报告将我的组件放在痛苦区域的角落.我只是想知道这是否应该让我担心.
疼痛区真正意味着什么?这不是说有很多耦合,事情不容易改变.
我最近删除了很多接口并密封了很多类,因为我不希望用户扩展API(仅在某些地方).它是com对象的.NET包装器,因此用户不需要扩展任何东西.
有什么好办法让我走出痛苦的区域?
谢谢
在这里,我们在本地和生成服务器上运行一组 Visual Studio 2008 的 CA 规则。为了签入,我们的 CA 规则必须与服务器策略相匹配。但是,我正在研究包含多个项目的大型解决方案。在启用 CA 规则的情况下,以发布模式构建项目需要很长时间,但这在创建或编辑单元测试时是必需的。这使得使用单元测试成为一项痛苦的任务。我想要做的是有一个快速的方法(比通过所有项目禁用 CA 更快)在开发过程中禁用 CA 规则,然后在签入之前重新启用它们。有谁知道这是否可能?
前段时间我回忆起一个工具的早期发布视频演示,该工具允许(从Visual Studio内部)检查一段代码的历史记录.例如,右键单击某个方法并选择"查看历史记录",然后查看该方法的更改时间.谁能回忆一下这可能是什么产品?
我正在寻找一些可以对PHP脚本进行基本测试的工具.
这次我对复杂的测试解决方案不感兴趣,需要为每一段代码编写测试.我对功能测试既不感兴趣.
我期望这个工具做的是指出可能导致无效使用的代码片段:
例如,无效的使用将使用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) 如果我能做魔术,我会想出一个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.如果你被要求实施它,你会从哪里开始?
在K&R书中,它在指针章节中显示了以下printf语句:
printf((argc > 1) ? "%s " : "%s", *++argv);
Run Code Online (Sandbox Code Playgroud)
我不明白这一行 - 为什么这里有两个%s?
谢谢!
在为我正在开展的一个小项目中使用Code Analysis之后,我想知道在解析代码符合分析时我应该有多严重.
我知道我可以为此禁止警告,但对我来说,在某种程度上抑制警告是一个警告(没有双关语意图......"FXCop").
示例警告:
不要在意外位置引发异常'CustomObject.Equals(object)'会创建类型为'ArgumentException'的异常.在这种方法中不应该提出例外.如果可能引发此异常实例,请更改此方法的逻辑,以便不再引发异常.
扔这个的原因......
CustomObject.Equals(object)可能会尝试比较CustomObject和FooBarObject ...它们甚至不是同一类型,所以在这个实例中,我应该抛出异常,还是只返回false?
一般来说,我是否应该真正肛门(因为想要一个更好的词)使我的代码绝对合规,或者我会遇到需要警告抑制的情况?
warnings code-analysis fxcop standards-compliance visual-studio
可能与此问题类似,但由于先前版本已经回答了该问题,因此我会为其打开一个新问题。
尽管我有意将代码气味放入我的源代码中,但 sonarqube 并未发现任何问题。生成分析报告 ( 101 KB ),压缩并成功上传。从扫描仪端执行是成功的。
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) 我们使用声纳进行代码分析。对于这样的课程
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 引用都分配有空值。这条线是在欺骗声纳吗?这应该是声纳中的一个错误吗?