回答
我同意JSLint的是最好的地方開始。請注意0不同於JSLint。我還建議查看JSure,在我的有限測試中,這兩項測試比其中任何一項測試都做得更好,儘管在執行過程中存在一些粗糙的問題 - 英特爾Mac版本在啓動時崩潰了,儘管PowerPC版本在英特爾上運行良好,而且Linux版本也運行良好。 (開發人員Berke Durak說,當這個問題得到解決後,他會回覆我的,但我還沒有收到他的回覆。)
不要像從一個好東西那樣期待JavaScript靜態分析C檢查器。正如Durak告訴我的那樣,「由於Javascript的動態性質,任何非平凡的分析都非常困難。」
(另一個更加模糊的僅限於Mac的bug,這次使用JSLint的Konfabulator小部件:將BBEdit文檔圖標拖動到開發人員Douglas Crockford沒有在Mac上試用這個組件)
2009年8月10日:今天在Static Analysis Symposium,Simon Holm Jensen提交了一篇關於TAJS: Type Analyzer for JavaScript的論文,用Anders Møller和Peter Thiemann。這篇論文沒有提到上述工具,但Jensen告訴我他看過其中一些並沒有留下深刻的印象。 TAJS的代碼應該在今年夏天的某個時候提供。
可惜JSLint只在線上。 – UpTheCreek 2012-03-13 08:04:35
@UpTheCreek:JSLint在GitHub上提供。 – 2012-03-27 16:37:58
@Dave哦,對,太棒了:) – UpTheCreek 2012-03-27 16:41:59
Google's "Closure" JS compiler在編譯時產生可配置的警告和錯誤。它肯定會發現拼寫錯誤的變量和方法,再加上參數錯誤。如果你願意寫JsDoc Closure方法,它也可以用類型信息做很多事情。
YUI「Compressor」工具也可以產生警告,但還沒有嘗試過。
我沒有太多的運氣與建立在Eclipse上的Aptana IDE,但其他人喜歡它。請參閱JS IDE的堆棧溢出討論。
IntelliJ IDE,這是不是最後我檢查了自由,有frickin'傑出的JS支持。它會檢測並突出顯示拼寫錯誤的變量和方法,以及更多。它也有自動完成功能。
我們的SD ECMAScript CloneDR是一款工具,用於在大型JavaScript源代碼庫中查找重複代碼的精確和接近錯過的副本。
它使用語言語法來指導檢測,因此無論格式如何變化,插入/刪除註釋,重命名變量甚至是一些插入/刪除語句,它都能找到克隆。
該網站在Google的Closure庫上運行示例CloneDR。
完全披露,我背後:http://www.toptensoftware.com/minime它做縮小,混淆和一套合理的皮棉風格檢查。
JSAnalyse剛剛發佈在codeplex上。 這是一個分析JavaScript文件之間的依賴關係的工具。你甚至可以定義允許的依賴關係,並且JSAnalysis檢查定義的規則是否被滿足。這使得即使在大型項目中也可以跟蹤JavaScript依賴項,並且擁有乾淨的架構。
JSAnalyse可以作爲命令行工具執行,也可以通過Visual Studio Layer Diagramm進行配置。集成到構建中也很容易。通過門控簽入,您可以控制依賴關係。
修訂ANSWER,2017年:是的。使用ESLint。 http://eslint.org
除了JSLint(在Flash Sheridan's answer已經提到)和Closure compiler(以前在awhyte's answer提到的)我曾經也得到了很多好處運行JSHint和PHP CodeSniffer。截至2012年,所有四種工具都是免費的開源軟件,並且擁有一個大型且活躍的開發者社區。他們每一位不同的(我認爲,互補)在各式各樣的檢查他們的表現:
的JSLint的設計是,現在仍然是道格拉斯Crockford的個人掉毛工具。它附帶一個偉大的默認規則集 - Crockford自己的,constantly updated關於JavaScript及其缺陷的continues to learn。 JSLint是highly opinionated,這通常是seen as a good thing.因此,您可以通過limited amount(有意)配置或禁用單個規則。但是,這可能會讓JSLint應用於遺留代碼變得困難。
JSHint非常相似的JSLint(實際上它began life作爲JSLint的叉),但它更容易/能夠configure or disable所有經由命令行選項或經由.jshintrc
file的JSLint的檢查。
我特別喜歡我可以告訴JSHint在文件中報告所有錯誤,即使有數百個錯誤。相比之下,儘管JSLint確實有配置選項,但在嘗試處理包含大量錯誤的文件時,通常會相對較早地進行救援。
的Closure編譯器是在非常有用的,如果代碼不會用封編譯,你可以感受到非常肯定說代碼爲在一些基本的方式深深暢飲。關閉編譯可能是有在JS世界的「解釋」語法檢查像php -l
或ruby -c
閉幕最接近的事也warns you about potential issues如缺少的參數和未申報或重新定義變量。如果你沒有看到你所期望的警告,試圖通過與--warning_level VERBOSE
PHP CodeSniffercan parse JavaScript以及PHP和CSS的選項調用閉幕提高警告級別。 CodeSniffer附帶幾種不同的編碼標準(例如phpcs -i
),其中包含許多有用的JavaScript代碼嗅探,包括針對inline control structures和superfluous whitespace的檢查。
這是一個list of JavaScript sniffs從1.3版本的PHP CodeSniffer中可用。6,這裏是custom ruleset that would allow you to run them all at once.使用自定義規則集,很容易pick and choose the rules你想申請。如果你想強制執行某種特定的「房子風格」,那麼你甚至可以使用write your own sniffs。 Afaik CodeSniffer是這裏提到的四種支持定製和創建新靜態分析規則的唯一工具。但有一點需要注意:CodeSniffer也是上述任何工具中運行速度最慢的。
我嘗試了ESlint,發現它good..you還可以添加自定義規則there..Here是GitHub庫:https://github.com/nzakas/eslint和這裏的介紹吧:http://www.nczonline.net/blog/2013/07/16/introducing-eslint/
綜上所述,JSLint的,JSHint,柏拉圖,ESLint,Google Closure-Linter是可用的工具。 我在嘗試用於Windows的Google Closure-Linter時遇到了安裝問題。但是,它在網頁上提到它對Windows的支持是實驗性的。 我發現並嘗試了另一種工作良好的工具。這裏是鏈接吧: http://esprima.org/
此外,這是GitHub的鏈接工具Esprima: https://github.com/ariya/esprima
更安全的重點不是通用的名單可以在Mozilla的維基在Security/B2G/JavaScript code analysis
被發現本文檔的目的是收集JavaScript代碼分析 工具適合包括在即將到來的Mozilla項目或 內部使用。
而且至少有一個商業產品,做安全分析:Burp gets new JavaScript analysis capabilities
打嗝的最新版本包含的JavaScript代碼靜態分析的新引擎。這使得打嗝掃描報告了一系列新的安全漏洞,其中包括:
- 基於DOM的XSS
- JavaScript注入
- 客戶端SQL注入
- 的WebSocket劫持
- 本地文件路徑操作
- 基於DOM的開放式重定向
- Cookie操作
- Ajax請求頭操縱
- 基於DOM的拒絕服務
- 網絡消息處理
- HTML5存儲操作
Flow確實靜態分析有和無註釋。
如果您需要註釋,則語法與TypeScript兼容。
安裝package有:
npm install --global flow-bin
還有一些工具。看看gulp-flowtype,或許SublimeLinter-flow
在商業領域,Coverity Static Analysis支持從版本7.7(2015年中)開始對JavaScript進行分析。關於您輸入錯別字的具體查詢,我的寵物項目出現在最新版本(8.0,2016年初)確實在程序元素的名稱中找到了輸入錯誤。作爲該項目的關鍵開發人員,請接受我的無恥插件:儘管尚未像venerated C/C++ analysis那樣成熟,但Coverity的JavaScript分析與許多相同的引擎共享,同樣專注於尋找低價值的缺陷假陽性缺陷報告率。除了發現一般的編程錯誤之外,我們越來越重視查找JavaScript(和其他語言)中的安全缺陷。
現在,這裏有一些錯別字發現(確切錯字作爲練習留給讀者,強調如何輕鬆地將這些可忽略):
merge.js:(stable link)(latest revision)
命令,包-query.js:(stable link)(latest revision)
系列餅tests.js:(stable link)(latest revision)
outline_case.js:(stable link)(latest revision)
- 1. 有沒有用於SQL Server數據庫設計靜態分析的好工具?
- 2. 開發專有API的靜態源代碼分析工具?
- 3. 靜態代碼分析工具
- 4. Adobe Flex靜態分析工具
- 5. 代碼增量靜態分析工具?
- 6. 選擇靜態代碼分析工具
- 7. SQL Server靜態分析工具?
- 8. 複製粘貼靜態分析工具?
- 9. 靜態代碼分析與動態代碼分析工具?
- 10. 解析沒有解析器工具
- 11. 有沒有一個用於識別SQL注入的靜態分析工具php/mysql
- 12. 有沒有免費的websphere 5分析工具?
- 13. Android:有沒有分析本機代碼的工具?
- 14. 有沒有比permcalc更好的工具來分析權限?
- 15. 你有沒有像kcachegrind分析工具爲mac
- 16. 是否有靜態分析工具來計算使用定義鏈?
- 17. 在打字稿中是否有任何好的靜態代碼分析工具?
- 18. 是否有任何工具可以執行Scala代碼的靜態分析?
- 19. 是否有可能使用類似FindBugs的Android靜態分析工具?
- 20. 動態代碼分析工具和動態測試工具是否有區別?
- 21. iPhone - 爲什麼靜態分析儀沒有選擇?
- 22. Clang靜態分析儀沒有找到最基本的問題
- 23. 用於C++/c共享和靜態庫的靜態分析工具
- 24. Django的靜態文件沒有工作
- 25. 開源靜態代碼分析工具,用於C++
- 26. 什麼是NetBeans 6.1最好的靜態分析工具?
- 27. 什麼靜態分析工具可用於C#?
- 28. .NET Core的靜態代碼分析工具
- 29. 針對VS2010推薦的靜態程序分析工具
- 30. Objective-C靜態分析工具 - Xcode的插件?
現在天打字稿是你的朋友 - 它支持JavaScript隱式類型檢查,如果你想要去100%,你可以寫jsdoc3或谷歌封閉註釋,它會從那裏推斷類型。像vscode或webstorm這樣的編輯器支持開箱即用:https://github.com/Microsoft/TypeScript/wiki/Type-Checking-JavaScript-Files – cancerbero 2017-12-08 19:26:45