admin管理员组文章数量:1296247
I know that the Google Closure Compiler does type checking—but are there any alternatives, preferably that aren't so tightly coupled with a library and optimizer?
If not, is there any way to have the Google Closure Compiler only do static analysis?
(By static analysis here, I mean things like defining types for arguments and so on that I can run through something to give me warnings if I make a typo or pass the wrong type.)
I know that the Google Closure Compiler does type checking—but are there any alternatives, preferably that aren't so tightly coupled with a library and optimizer?
If not, is there any way to have the Google Closure Compiler only do static analysis?
(By static analysis here, I mean things like defining types for arguments and so on that I can run through something to give me warnings if I make a typo or pass the wrong type.)
Share Improve this question asked Jul 12, 2011 at 23:56 Aaron YodaikenAaron Yodaiken 19.6k33 gold badges108 silver badges187 bronze badges 8- I think you are going at it in the opposite direction. Type checking is a feature of the piler's pilation process. It is there to facilitate pilation, not really intended to be used stand-alone as it depends quite a lot on piler features. However, you don't need to use the Closure Library to use the piler. – Stephen Chung Commented Jul 14, 2011 at 4:02
- I know that—that's why I'm looking for alternatives. – Aaron Yodaiken Commented Jul 14, 2011 at 4:33
- Well, there is something called the Closure-Linter that may do what you want... – Stephen Chung Commented Jul 14, 2011 at 4:46
- 1 What does the piler so that you can't just ignore the output file? – John Commented Dec 20, 2011 at 20:51
- @luxun Your website looks a lot like mine. – Engineer Commented Oct 23, 2012 at 13:05
3 Answers
Reset to default 2There's Doctor JS, which is a Mozilla project that primarily (as I understand it, at least) does type-checking for JS.
Microsoft's AJAX Minifier is a little more relaxed about the amount of prep you need to do to a JS file to get useful results out of it. You can run it with defaults and get out a highly minified file that still works with outside code: http://ajaxmin.codeplex./
But, both Closure Compiler and Ajax Minifier can only do very limited static analysis beyond basic linting, because of how Javascript is designed. Accessing an undeclared property may just be checking for undefined, assigning an undeclared variable just means declaring it in the global scope, assigning an object to a variable that contained a number is legal, etc. There's a lot that's legal in JS that your typical language (Java, C#) considers out of bounds, so without declaring types, boundaries and expectations for a specific piler you're unfortunately limited in the errors you can prevent.
I'd be a bit more interested in something that can transform between the big 2 (MS and Google). It would be useful for IDE support, testing code size with advanced optimizations, etc.
I have been quite happy with the intellij idea / webstorms editor, which parses jsdoc and does its own static analysis to flag potential or actual type safety errors. It has proven quite useful, although a bit of work was needed to get inheritance to work with some mon frameworks. Due to the tons of approaches possible with javascript prototypal inheritance, the piler needs a bit more help than for other languages.
It's a mercial tool, but I'm able to use it for java, php, javascript, python and ruby projects, all with some pretty decent static analysis and refactoring helpers. I used to do a lot with emacs and running node.js processes for jshint and closure piler, but this is a lot less brittle.
本文标签: google closure compilerWhat is the current state of JavaScript static type checkingStack Overflow
版权声明:本文标题:google closure compiler - What is the current state of JavaScript static type checking? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741630393a2389327.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论