问题标签 [static-analysis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
247 浏览

language-agnostic - 关于错误发现的静态分析的良好介绍性文本?

我正在寻找关于用于查找错误的静态分析理论的良好介绍性文本。有什么建议吗?

0 投票
1 回答
126 浏览

version-control - 我如何向我的团队提供有关构建中包含的更改及其对风险的影响的反馈?

这是你已经做过的事情还是你知道一个好的工具?

目标:帮助团队了解最近的源更改如何影响风险,以便他们知道将测试工作集中在哪里。随着时间的推移提供数据并将其反馈到开发周期的规划和范围界定阶段。

计划: 将 svn 更改数据与 clover 复杂性数据结合在一份报告中,显示更改对复杂性或更改风险的影响(行数 x 复杂性 = 风险?)。它并不完美,但它可以帮助团队更好地理解变化。

有人试试这个吗?如果是这样,您使用了哪些工具,以及如何为团队提供这种提示?

0 投票
6 回答
3776 浏览

python - 是否有针对 Python、Ruby、Sql、Cobol、Perl 和 PL/SQL 的静态分析工具?

我正在寻找一个用于 Python、Ruby、Sql、Cobol、Perl、PL/SQL、SQL 的静态分析工具,以查找错误和检查样式。我正在寻找计算行数,在开发过程中识别错误并执行编码标准。

0 投票
1 回答
108 浏览

apache-flex - 编码约束检查器?

请帮助我获得动作脚本和 flex 3 的编码约束。

问候, 拉尔吉

0 投票
2 回答
1001 浏览

java - 如何检测 Java 字节码中的数组大小 (FindBugs)

我想通过查看字节码来了解分配的数组的大小,当然,如果该信息在编译时是已知的。

背景:我想编写一个 FindBugs 检测器(它查看已编译的字节码)并报告某些数组分配的发生。为了过滤掉误报,我对“小”数组不感兴趣,而只对那些大小在编译时不可用或大于可配置阈值的数组感兴趣。

由于 FindBugs 源代码没有太多的文档记录,我正在寻找一些关于如何开始的指示——也许已经有一个检测器在做类似的事情,我可以看看。

0 投票
3 回答
946 浏览

java - 哪种 Java 静态分析工具最容易扩展?

哪些Java静态分析工具具有最简单的扩展机制。我检查了PMD 但编写自定义规则的过程似乎非常复杂。具体来说,我想知道是否有任何工具提供类似AspectJ的语法来挑选有趣的代码区域?我知道 AspectJ,declare warning但它的功能似乎有限。

我发现了一个相关的问题:

Java的静态分析工具推荐? Java的静态分析工具推荐?

答案列出了许多工具。但我想找出哪一个提供了编写自定义规则的最简单选项。

编辑:到目前为止,纪尧姆建议的 PMD 的 XPath 表达式似乎最接近我正在寻找的内容。我将很快探索它。

0 投票
7 回答
11832 浏览

java - 在 Java 中使用 System.err 有什么问题?

我在我的 Java 代码上使用 Enerjy ( http://www.enerjy.com/ ) 静态代码分析器工具。它告诉我以下行:

System.err.println("忽略了那个数据库");

不好,因为它使用 System.err。确切的错误是:“JAVA0267 使用 System.err”

使用 System.err 有什么问题?

0 投票
1 回答
386 浏览

java - \old(Expression[Id]) 的 JML 评估

我想知道如何\old(Expression[Id])评估表单的 JML 表达式,即如果我有\old(vector[value-1])表达式,是否\old也指“值”或仅指vector[value-1]. 提前致谢!

0 投票
34 回答
7051 浏览

unit-testing - 为什么代码质量讨论会引起强烈反响?

我喜欢我的代码井井有条,即正确格式化、可读、设计、测试、检查错误等。事实上,我对此很狂热。(也许甚至比狂热还多……)但根据我的经验,帮助代码质量的行动几乎没有实施。(我所说的代码质量是指您每天生成的代码的质量。软件质量与开发过程等的整个主题要广泛得多,而不是这个问题的范围。)

代码质量似乎并不受欢迎。根据我的经验,一些例子包括

  • 可能每个 Java 开发人员都知道 JUnit,几乎所有语言都实现了 xUnit 框架,但在我所知道的所有公司中,只有极少数适当的单元测试存在(如果有的话)。我知道由于技术限制或紧迫的最后期限,并不总是可以编写单元测试,但在我看到的情况下,单元测试本来是一种选择。如果开发人员想为他/她的新代码编写一些测试,他/她可以这样做。我的结论是开发人员不想编写测试。

  • 静态代码分析经常在小型项目中使用,但并没有真正用于强制编码约定或在企业项目中发现可能的错误。通常,甚至像潜在的空指针访问这样的编译器警告也会被忽略。

  • 会议发言人和杂志会谈论很多关于 EJB3.1、OSGI、Cloud 和其他新技术,但很少谈论新的测试技术或工具、新的静态代码分析方法(例如 SAT 求解)、有助于保持更高质量的开发过程、如何一些令人讨厌的遗留代码被测试了,......(我没有参加很多会议,对于敏捷主题的会议来说,它可能看起来不同,因为单元测试和 CI 等在那里具有更高的价值。)

那么为什么代码质量如此不受欢迎/被认为很无聊?

编辑:
感谢您的回答。其中大多数涉及单元测试(并已在相关问题中进行了讨论)。但是还有很多其他的东西可以用来保持高代码质量(参见相关问题)。即使您无法使用单元测试,您也可以使用每日构建,在您的 IDE 或开发过程中添加一些静态代码分析,尝试结对编程或强制审查关键代码。

0 投票
5 回答
861 浏览

java - 在 Java 的构造函数中使用 super() 有什么问题?

当我对以下代码运行静态分析时:

我收到以下错误:

“JAVA 0058 构造函数 'ExtractDBScripts' 调用 super()”。

super()从构造函数调用有什么问题?