像Google Closure、JSHint、JSLint这样的Javascript静态分析工具能做到以下几点吗:
- 他们能识别源代码中未使用的Javascript文件和函数吗
- 他们能识别源代码中重复的Javascript文件和函数吗
这些静态分析工具没有文件的概念,只有代码的文本表示。因此,它们不会识别未使用或重复的文件。他们必须了解如何部署文件才能做到这一点。
它们不会识别未使用的功能。
它们确实识别了同一文件中的重复函数。至少在大多数情况下:
function a() {}
/* ... */
function a() {}
会给你a is already defined
。但是:
var a;
a = function () {};
/* ... */
a = function () {};
是完全合法的,不会给你带来错误。
如果你想在所有文件中找到重复的函数,你可以在linting之前简单地将它们连接在一起。
我们的CloneDR静态分析工具将为包括JavaScript在内的许多语言找到任意代码片段的精确且近乎重复的副本。它将在文件内部和文件之间执行此操作。(CloneDR未检测到未使用的代码。)