问题标签 [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 投票
2 回答
1354 浏览

static-analysis - Code Contracts 静态检查器是否应该能够检查算术界?

(也发布在 MSDN 论坛上- 但据我所知,这并没有获得太多流量。)

我一直在尝试提供Assertand的示例Assume。这是我得到的代码:

(当然,能够传入空引用而不是现有Random引用的业务纯粹是教学。)

我曾希望,如果检查员知道这一点firstRoll并且secondRoll每个人都在范围内[1, 6],那么它能够计算出总和在范围内[2, 12]

这是不合理的希望吗?我意识到这是一项棘手的工作,确切地计算出可能发生的事情......但我希望检查员足够聪明:)

如果现在不支持,这里有没有人知道它是否可能在不久的将来得到支持?

编辑:我现在发现静态检查器中有非常复杂的算术选项。使用“高级”文本框,我可以从 Visual Studio 中试用它们,但据我所知,它们的作用没有像样的解释。

0 投票
2 回答
910 浏览

.net - 如何在构建期间抑制静态代码分析?

我们有一个包含 15 个项目的解决方案,所有项目都启用了代码分析。

该解决方案很容易花费 60 多秒的时间来构建,这在等待时是很长的时间。

如果我禁用代码分析,它会在 10 秒内构建。

我希望能够临时禁用代码分析。但我仍然希望在签入前构建时进行代码分析,并且我希望我们的构建服务器(巡航控制)在启用代码分析的情况下继续运行。

如果代码分析是从 Visual Studio 中运行的,我更喜欢,所以如果我收到错误/警告,我可以直接跳转到源代码。

0 投票
2 回答
21675 浏览

formatting - 如何关闭 JSLint 缩进警告?

我发现JSLint会产生很多形式的警告:

JSLint 选项文档描述了一个选项,该indent选项识别表示每个缩进级别的空间量的数值。这个选项允许我说每个缩进级别使用 2 个空格。我只是在我的 JavaScript 文件的顶部写了这样的东西:

好的,不错。现在 JSLint 知道每个缩进级别要缩进多少,但是 JSLint 似乎是硬编码来决定每行应该有什么级别的缩进

假设我想以不同于 JSLint 规定的方式缩进我的代码。我可以用一些 JSLint 选项来做到这一点吗?如果没有,我至少可以关闭缩进警告吗?我试过:

但这并没有导致缩进警告被忽略;它导致了一个 JSLint 错误。

0 投票
5 回答
4251 浏览

perl - 如何为 Perl 制作静态分析调用图?

我正在开发一个中等复杂的 Perl 程序。作为其开发的一部分,它必须经过修改和测试。由于某些环境限制,经常运行这个程序并不是一个容易练习的选项。

我想要的是 Perl 的静态调用图生成器。它不必涵盖所有边缘情况(例如,在 eval 中将变量重新定义为函数,反之亦然)。

(是的,我知道有一个使用 Devel::DprofPP 的运行时调用图生成工具,但运行时不能保证调用每个函数。我需要能够查看每个函数。)

0 投票
2 回答
116 浏览

language-agnostic - 高级/语义优化

我正在编写一个编译器,我正在寻找优化资源。我正在编译为机器代码,所以运行时的任何事情都是不可能的。

我最近一直在寻找的是更少的代码优化和更多的语义/高级优化。例如:

即使这些函数是完全内联的,它们最终也可以调用永远不能内联的操作系统内存函数。我希望能够完全消除该语句,而无需在编译器中构建特殊情况规则(毕竟,malloc它只是另一个函数)。

另一个例子:

在这种情况下,我希望能够将b' 的容量初始化为str.Length + 2(足以准确地保存结果,而不会浪费内存)。

老实说,我不知道从哪里开始解决这个问题,所以我希望从某个地方开始。有没有在类似领域做过任何工作?是否有任何编译器在一般意义上实现了类似的东西?

0 投票
6 回答
850 浏览

perl - 是否有从 Perl 模块文件中提取所有变量、模块和函数名称的工具?

如果这是重复的,我深表歉意;我可能不知道要搜索的正确术语。

我的任务是分析作为较大应用程序片段的 Perl 模块文件 (.pm)。是否有工具、应用程序或脚本可以简单地遍历代码并提取所有变量名、模块名和函数调用?更好的是可以识别它是在这个文件中声明的还是外部的。

这样的工具存在吗?我只得到一个文件,所以这不是我可以执行的——我猜只是一些基本的静态分析。

0 投票
1 回答
827 浏览

optimization - Visual C++ 使用什么形式的别名分析?

我试图弄清楚Visual C++ 中使用了何种形式的别名分析。它也被称为指针分析、mod-ref 分析、指向分析或副作用分析,并且非常接近逃逸分析或形状分析(如果您已经看到这些术语被大肆宣传)。

如果有人知道 MSDN 在哪里讨论过这类事情,我可能会从那里找到方法。(我试过搜索,但如果你不花太多时间在那里,MSDN 似乎是不可理解的。)

0 投票
1 回答
759 浏览

cocoa - 核心基础对象的垃圾收集

在这段代码上运行静态分析器:

产生以下警告:

调用函数“CFPreferencesCopyAppValue”返回一个核心基础对象,其保留计数为 +1(拥有引用)。Core Foundation 对象不会自动进行垃圾回收。

这是一个警告,我应该用这样丑陋的东西来修复:

或者这只是一个误报,因为复制的对象是免费桥接的?

0 投票
3 回答
1236 浏览

java - Java 最小化依赖

我有一种情况,其中有一小段 Java 代码具有大量依赖的 jar。但是,这些 jar 中的依赖关系非常浅。在大多数情况下,它只依赖于单个接口的 jar。

我不想在应用程序中分发所有 jar,而是在它实际使用的 jar 中分发特定的类文件。这样做的原因是为了节省空间(此代码将存在于小程序中)。

有谁知道自动执行此操作的工具或方法?假设所有依赖项都是静态的,这似乎完全有可能。有任何想法吗?

0 投票
1 回答
272 浏览

static-analysis - 维护 FindBugs 错误历史

FindBugs 提供了一种对错误进行数据挖掘的方法。这看起来很有趣,因为它有助于在各种修订中发现错误趋势。我想做的是:

每次提交到版本控制时,都会运行 FindBugs 并生成报告。是否可以生成从所有这些报告中获取数据并显示趋势的报告?有没有人做过类似的事情?