Google Closure Compiler 100%打字

Sve*_*cht 10 javascript typing google-closure-compiler jsdoc

如何让我的应用程序在谷歌闭包编译器方面100%打字?

我已经使用jsdoc注释标记了所有内容.甚至可以获得100?我在64.6%

kay*_*ahr 15

有可能达到100%.我自己的项目是100%打字的.闭包编译器可以输出有关未知类型的表达式的警告.遗憾的是,没有命令行选项来启用此功能.您必须修改源代码才能启用它:

  1. 下载当前来源:

    git clone https://code.google.com/p/closure-compiler/

  2. 编辑src/com/google/javascript/jscomp/CompilerOptions.java并将行更改reportUnknownTypes = CheckLevel.OFFreportUnknownTypes = CheckLevel.WARNING

  3. 只需ant在根目录中调用即可编译闭包编译器.修改后的compiler.jar现在位于构建目录中.

当您在脚本上使用此修改后的编译器时,它会针对编译器无法确定类型的所有表达式发出大量警告.当您在代码中修复所有这些警告时,它将100%键入.

  • 今天可以通过命令行使用`--jscomp_warning = reportUnknownTypes`. (8认同)

Cri*_*ian 9

编译器有一个标志,您可以设置该标志以使未知类型输出警告.

--jscomp_warning=reportUnknownTypes
Run Code Online (Sandbox Code Playgroud)

您还需要提高警告级别.

--warning_level=VERBOSE
Run Code Online (Sandbox Code Playgroud)


Jan*_*Jan 5

我尝试编译goog.net.XhrIo作为测试:

goog.require('goog.Uri.QueryData');
goog.require('goog.debug.ErrorHandler');
goog.require('goog.net.XhrIo');

goog.net.XhrIo;
Run Code Online (Sandbox Code Playgroud)

当我编译这个时,我有这个结果:

20-nov-2010 1:12:21 com.google.javascript.jscomp.LoggerErrorManager printSummary
WARNING: 0 error(s), 1 warning(s), 91,5% typed
JSC_USELESS_CODE. Suspicious code. This code lacks side-effects. Is there a bug? at test.js line 5 : 0
Run Code Online (Sandbox Code Playgroud)

似乎封闭库本身并非100%打字,我认为目标不是达到100%.Javascript不是静态类型语言.Closure试图将静态类型语言的一些好处带入javascript.这很好.但这并不意味着你必须承担这种语言的负担.

编辑:

我试图编译一个空文件,结果是90.4%.我认为这意味着具有所有原始函数的base.js不是100%类型的.所以我做了一些实验,发现当我还在所有局部变量上输入类型信息时,百分比会上升.我认为没有必要在所有局部变量上放置类型信息.我的意思是想象一下:

/** @type {number} */
var i = 0;
for(i = 0; i < 10; i++) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

这不是使用闭包编译器进行编译的目标.事实证明,编译base.js不会导致100%.我试着在我的开发中将这个数字保持在85%到95%之间.根据您的时间,编程风格和您正在处理的应用程序可能会有所不同.最好的指导方针是在整个应用程序开发过程中尽量保持百分比不变,无论是60%还是90%.只需根据需要进行尽可能多的打字,以使您熟悉自己的代码.