Javascript代码分析和最佳实践

Javascript代码分析和最佳实践,javascript,code-analysis,Javascript,Code Analysis,有没有工具可以帮助那些真正想要类型安全和更严格的语言规则的程序员,比如c#或java与javascript的结合 例如,某个东西分析了源文件,发现了未声明的变量或定义类型对象(如int或string)的js文件?您想要一个lint程序。尝试jslint--除了jslint之外,Google Closure Compiler还可以用于JS源代码的静态分析,它还可以检查与jslint不同的内容 但是,这两种工具都不能提供您想要的。。如果我没记错的话,闭包编译器会尝试进行类型检查,但它并不总是起作用

有没有工具可以帮助那些真正想要类型安全和更严格的语言规则的程序员,比如c#或java与javascript的结合


例如,某个东西分析了源文件,发现了未声明的变量或定义类型对象(如int或string)的js文件?

您想要一个lint程序。尝试jslint--

除了jslint之外,Google Closure Compiler还可以用于JS源代码的静态分析,它还可以检查与jslint不同的内容

但是,这两种工具都不能提供您想要的。。如果我没记错的话,闭包编译器会尝试进行类型检查,但它并不总是起作用

尽管从习惯于严格类型语言的人的角度来看,这些特性似乎是可取的,但我经常看到人们试图使用JS,如C#/Java/等等,在多个级别上出现错误,通常会导致可读性较差的代码。当然,这可能不是你的情况,但这只是一个需要记住的一般性观察/警告


我的建议是接受语言的“松散性”,也许测试驱动开发是一种质量辅助工具(JsTestDriver)。

就像@no said一样,jslint是hawt。但是,我认为您正在寻找。如果您想检查javascript依赖项并定义客户端架构,可以使用


它允许您在构建过程中通过检查来控制javascript文件之间的依赖关系。它扩展了Visual Studio层关系图以支持Java脚本,并且可以轻松地集成到msbuild进程中。

通过静态分析无法获得动态类型语言中的类型安全性,因为任何类型都可以在运行时的任何位置更改。@galamalazs如果使用工具标记所有发生这种情况的情况,则无法获得。问题是是否存在这样的工具。我开始使用JSLint。这是商品——非常好的东西。结束,我发现没那么有用(虽然那可能是无知)。但它有点让我发疯——我的意思是放松。例如,我的程序中有一个状态结构,它是:ga.gameEvents.Idle等。在某个时候,我想我在运行宏时漏掉了一个“.”,代码中是gagameEvents.Idle。所以我花了30分钟在chrome中筛选,试图找出传递给函数的给定值未定义的原因。吼叫声知道编译器会抓到这一点让我有点生气。我认为JSLint仍然会怀念这种性质的东西(也许正确的答案是GWT。如果我没有做html5画布的东西,我会使用它。你可以尝试使用诸如Aptana或WebStorm之类的IDE。他们可以捕获这类东西,因为他们会检查你尝试使用的变量是否存在。JSLint可能也会捕获未定义变量的使用。太棒了,我会检查这些IDE。谢谢Jani!这里还有一个简洁的工具:如果您正在使用它,它显然会将JSLint嵌入到VS中。