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

javascript - 有没有 JavaScript 静态分析工具?

当我做一些愚蠢的事情(比如变量名的拼写错误)时,我习惯于让我的编译器抱怨,但 JavaScript 有让这个通过的习惯。

有 JavaScript 的静态分析工具吗?

0 投票
6 回答
7628 浏览

actionscript-3 - 静态 Actionscript 代码分析可能性

我想直观地查看类、函数和变量/属性、依赖项,例如NDepend,但对于 ActionScript 2 或 AS3 代码。

有什么计划或想法吗?

以某种方式使用doxygen ?

弹性单元?

0 投票
1 回答
526 浏览

asp.net-mvc - 有人为 ASP.NET MVC 应用程序的静态分析编写了工具吗?

有没有人编写过一个工具来对 ASP.NET MVC 应用程序进行静态分析?

免责声明:我不确定我真正想要的是静态分析——它只是我能想到的最接近的术语。

我想要的是获得所有控制器的列表,我的操作,显示它们是响应 GET 还是 POST,它们的缓存设置是什么等。

我相信您可以继续进行下去 - 并继续解决更高级的问题,例如是否每个操作实际上都可以通过路线访问。

如果没有人这样做——这是人们认为有用的东西吗?它还应该做什么?

0 投票
4 回答
3264 浏览

c - 这真的是缓冲区溢出吗?

我们使用的静态分析工具将类似于以下的 C 代码标记为严重缓冲区溢出。

该工具的错误信息是: Buffer Overflow (Array Index Out of Bounds): The array 'buf' size is 1. Array 'buf' may use the 0..64 index。

这是合法的吗?将字符数组分配给空字符串是否真的导致其长度减少到单个字节,就好像它被定义为一样char buf [] = "";

0 投票
5 回答
5728 浏览

objective-c - Code linting for Objective C

Are there any code linting tools for ObjectiveC?

0 投票
10 回答
11575 浏览

python - 是否需要“使用严格”的 Python 编译器?

Python存在静态分析工具,但编译时检查往往与Python 所拥护的运行时绑定理念截然相反。可以使用静态分析工具包装标准 Python 解释器来强制执行一些“使用严格”类的约束,但我们没有看到这种东西被广泛采用。

Python 是否有某些东西使“使用严格”行为变得不必要或特别不受欢迎?

或者,尽管 Perl 被广泛采用,但“使用严格”行为是否不必要?

注意:“必要”是指“实际上必要”,而不是绝对必要。显然你可以不使用“use strict”来编写 Perl,但是(据我所见)大多数 Perl 程序员确实使用它。

注意:Python 解释器包装器不需要类似“use strict”的约束——您可以使用类似于“use strict”的伪编译指示,普通解释器会忽略它。我不是在谈论添加语言级别的功能。


更新:根据评论解释 Perl 中“使用严格”的作用。(官方文档的链接在第一段。)

“use strict”指令具有三个不同的组件,其中只有两个非常有趣:

  • use strict vars:静态检查程序中词法范围的变量使用情况。(请记住,在 Python 中,基本上只有global作用域和local作用域)。许多 Python linter 会检查这类事情。因为这是他们唯一可以做的静态分析,所以 linter 假设你使用简单的词法作用域,并警告你在这种意义上看起来错误的事情,直到你告诉他们闭嘴。IE

    如果您没有对命名空间做任何花哨的事情,这对于检查拼写错误很有用。

  • use strict refs:防止符号命名空间取消引用。Python 最接近的类比是使用locals()globals()进行符号绑定和标识符查找。

  • 使用严格的潜艇:Python 中没有真正的模拟。

0 投票
14 回答
5974 浏览

c++ - C++ 静态代码分析工具值得吗?

我们的管理层最近一直在与一些销售 C++静态分析工具的人交谈。当然,销售人员说他们会发现很多错误,但我对此表示怀疑。

这些工具在现实世界中如何工作?他们能找到真正的错误吗?它们是否帮助更多初级程序员学习?

他们值得麻烦吗?

0 投票
1 回答
258 浏览

code-analysis - 查找依赖于 .NET 3.5 SP1 的代码

有没有办法运行某种代码分析来查找可以使用 .NET 3.5 SP1 而不是 3.5 RTM 编译的代码?

FxCop 适用于随 SP1 引入的程序集,但对于仅调用新方法和属性的代码,它不会检测到这种用法。

0 投票
4 回答
3227 浏览

c - 如何让夹板忽略我声明变量的位置?

你知道我怎样才能让夹板忽略我声明变量的地方吗?

我知道老派 c 告诉你在每个函数的开头声明变量,但由于我是一个坏人,我喜欢在我使用它们的地方声明东西。一个很好的例子是把 int i; 就在 for(i=0;...) 之前。

我们举一个非常简单的例子

这里夹板和大多数旧的 c 编译器都想移动 int i; 向上一行,或将 {} 放在声明和 for 循环周围。

现在的问题是,我如何关闭此检查?但是保持其他检查好?

谢谢约翰


注意 1:我已经使用 gcc 警告(见下文)作为第一道防线,而 valgrind 作为第二道防线。但是我正在考虑将夹板添加到可以控制我的愚蠢的事物列表中;-) 但是这个检查很烦人,

我使用的 gcc 警告: -Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror

注意 2:我知道这种不良行为可能带来的潜在可移植性问题。但我觉得它增加了可读性,也就是不需要上下跳跃来搜索这种类型的 off 声明更有价值(我们可以在另一个线程中讨论这个)。


更新:更多信息,我将上面的代码放在一个名为 main.c 的文件中。使用的平台是 Ubuntu 8.04 和 gvim 作为编辑器,这是我运行时 splint 的输出:

这又提出了两个我以前没有考虑过的问题。

  1. “与当前值冗余”,当前值是多少?

  2. 为什么它是解析错误而不是警告?


更新::有可能修补夹板来支持这个问题,我还没有尝试过,但我认为这是解决方案。

0 投票
4 回答
159 浏览

.net - 弃用某些方法/类型

为了防止使用某些成员(或类型),有一种方法可以将它们标记为已过时(有时将来会完全删除它们)。

但是有没有办法弃用已编译的第三方程序集的成员(或类型)?或者,至少,在使用它们时确保(或发出警告)?