JavaScript の静的解析ツールはありますか?[閉まっている]
-
22-08-2019 - |
質問
私は変数名のタイプミスなど愚かなことをしたときにコンパイラーに文句を言われることに慣れていますが、JavaScript にはこれを無視する習慣があります。
JavaScript 用の静的解析ツールはありますか?
解決
JSLint が出発点として最適であることに私も同意します。ご了承ください JavaScript リント とは異なります JSLint. 。チェックアウトすることもお勧めします J確かに, 私の限られたテストでは、どちらよりも優れた結果を出しましたが、実装にいくつか荒削りな点がありました。Intel Mac バージョンは起動時にクラッシュしましたが、PowerPC バージョンは Intel でも問題なく動作し、Linux バージョンも同様に問題なく動作しました。 。(開発者の Berke Durak は、これが修正されたら連絡すると言ってくれましたが、連絡はありません。)
JavaScript の静的分析には、優れた C チェッカーほど多くのことを期待しないでください。Durak 氏が私に語ったところによると、「JavaScript の動的な性質により、重要な分析は非常に困難です。」
(もう 1 つのさらに不明瞭な Mac のみのバグです。今回は JSLint の Konfabulator ウィジェットに関連しています:BBEdit ドキュメント アイコンをウィジェットにドラッグすると、ドキュメントがゴミ箱に移動します。開発者のダグラス・クロックフォードは、Mac 上でこのウィジェットを試したことがありませんでした。)
2009 年 8 月 10 日:今日は 静的解析シンポジウム, 、サイモン・ホルム・ジェンセンは次の論文を発表しました。 タージス:JavaScript 用の型アナライザー, 、Anders MøllerとPeter Thiemannとともに書かれました。この論文では上記のツールについては言及されていませんが、ジェンセン氏は、それらのいくつかを見たが、感心しなかったと私に言いました。TAJS のコードはこの夏中に利用可能になるはずです。
他のヒント
更新の回答を、2017:そうです。利用ESLint. http://eslint.org
のほか、 JSLint (既に申し上げたように、 Flashシェリダンの応答 の 閉鎖のコンパイラ (前記 awhyteの回答 していても多く頂いているから走る JSHint や PHP CodeSniffer.2012年現在、ツールを無料のオープンソースとして大活躍デベロッパーズコミュニティである。彼らはそれぞれ少し異なる(と思い、補完の種類のチェックを行い:
JSLint ことができるように設計されて、もはダグラスCrockfordの個人lintingツールです。で船舶と 大 デフォルト東電が悪--Crockford自 継続的に更新され として彼 いて学ぶ JavaScript(ジャバスクリプト)について、その落とし穴.JSLintは 高極性 とするのが一般的であ していかもしれない。 その(意図) 数量限定 でできる設定を無効に個別ルールここでは厳しい応用JSLintるレガシーコードです。
JSHint はJSLint(こ 生命の始まり としてJSLintフォーク)もが容易である/できる 設定を無効に すべてのJSLintチェックのコマンドラインオプションまたは .jshintrc
ファイル.
よっこいいですねJSHint報告 すべての 誤差のファイルが含まれていても、数百人に誤差は生じません。逆に、はJSLintい maxerr
設定オプションで一般的に救済の比較的早期させようとする場合、ファイルを処理することが数字に誤差は生じません。
閉鎖をコンパイラ して極めて有用である.しかし,この場合、コード な コンパイルの閉鎖を感じますが、非常にあるとコード は 深くhosedの一部の基本です。閉鎖編集、クリーンエネルギーであるのに最も近いものがあること、JSの世界への"通訳"構文チェックのように php -l
または ruby -c
閉鎖も 警告していて、潜在的な問題 欠けなどのパラメータの未申告または再定義の変数.でない場合に警告を期待すること、増加の警戒レベルを呼び出すことにより閉鎖オプションの --warning_level VERBOSE
PHP CodeSniffer JavaScriptの構文解析が可能 とPHPと。CodeSniffer船のいくつかの異なる符号化の基準とな phpcs -i
う)など多くの有sniffsのためのJavaScriptコードを含むチェック対 インラインの制御構造 や 余分な空白文字.
こちらは リストのJavaScript sniffs ごPHP CodeSnifferのバージョン1.3.6、ここにある カスタム東電が悪いで実行することができていています。 使用カスタムrulesetsで を選びのルール います。ともできるので 書自sniffs したい場合は執行のこだわりの"ハイ"にな対応セット。Afaik CodeSnifferのツールのつであることが明らかにされた。を支えるのカスタマイズにし、新しい静的解析。一面もCodeSnifferも遅い-運営のツール。
YUI「コンプレッサー」ツールは、あまりにも警告を生成することができますが、まだ試していません。
私はAptanaのEclipseの上に構築されたIDE、それのような他の人と多くの幸運を持っていませんでした。 JSのIDEのスタックオーバーフローの議論を参照してください。
私が最後にチェック無料ではありません。IntelliJのIDEは、frickin'優れたJSをサポートしています。これは、検出し、スペルミスVARS及び方法入力時に、そしてより多くを強調表示します。それはあまりにも、オートコンプリート持っています。
要約すると、JSLint、JSHint、プラトン、ESLint、Googleの閉鎖-リンターは、利用可能なツールです。 Windows用Googleの閉鎖・リンターを試しながら、私は、インストールの問題に直面しました。しかし、それは、Windowsのサポートは実験的なもので、Webページ上で言及しません。 私が発見し、うまく機能別のツールを試してみました。ここではそのためのリンクです: http://esprima.org/ の
また、これはツールEsprimaのためのgithubのリンクです: https://github.com/ariya/esprima の
私はESlintを試し、それはまたthere..Hereは、GitHubのレポでカスタムルールを追加することができgood..youが見つかりました:<のhref =「https://github.com/nzakas/eslint」のrel =「noreferrer」 > https://github.com/nzakas/eslint と、ここでそれを紹介します:<のhref = "http://www.nczonline.net/blog/2013/07/16/introducing-eslint /」のrel = "noreferrer"> http://www.nczonline.net/blog/2013/07/16/introducing-eslint/ の
よりセキュリティのため、一般的な目的でリストするときは、Mozilla Wikiで セキュリティ/B2G/JavaScriptのコード解析
この文書を収集することJavaScriptコードの解析 ツールの適用を含め、Mozillaプロジェクトまたはのために 社内利用します。
また、少なくとも一つの商品とはセキュリティ分析: Burpに新しいJavaScriptの分析能力
最新のリリースBurpを含む新しいエンジンのための静的解析のJavaScriptコードです。これによりBurpスキャナーの報告範囲に新たな脆弱性を含む:
- DOMに基づくクロスサイト-スクリプティング
- JavaScript注入
- クライアント側のSQLインジェクション
- WebSocketハイジャック
- 地元のファイルのパスを操作
- DOMをベースとしたオープのリダイレクト
- クッキーの操作
- Ajaxでのリクエストヘッダの操作
- DOMに基づくサービスの拒否
- Webメッセージ操作
- HTML5保存の操作
の商業分野 Coverity静的解析 対応解析のJavaScriptのバージョン7.7(mid-2015年))が見込まれています。に関するお客様の特定についての誤字、私のペットプロジェクトに登場する最新のリリース(8.0首2016年度) は見間違えや 名前のプログラムです。
キーとしての開発プロジェクトの受け入れてくださっ恥知らずのプラグイン:がいないとして成熟してい 崇めのC/C++解析,CoverityのJavaScript分析株の多くは、同じエンジンは、同じ焦点を見いだすことに価値の高い欠陥率が低偽陽性と欠陥ます。を強化しており、当社を重視安全保障の欠陥JavaScriptおよびその他の言語)を見つけることに加えて一般プログラムのエラー.
現在、この誤字を引用符で囲みます。(正誤植左としての運動のリーダーを重視すべてのこれらの見落とされることができ):
commands-packages-query.js: (安定リンク) (最終改訂)
私が好き Jslint にこの種のもののために...
流れ アノテーションの有無にかかわらず静的分析を実行します。
注釈が必要な場合、構文は以下と互換性があります。 TypeScript.
をインストールします。 パッケージ と :
npm install --global flow-bin
いくつかのツールもあります。見て ガルプフロータイプ そしておそらく SublimeLinter フロー
JSAnalyseはただのCodePlex上で公開されています。 これは、JavaScriptファイル間の依存関係を分析するツールです。あなたも許さ依存関係を定義することができますし、JSAnalysisは、定義されたルールが満たされているか否かをチェックします。それにも大規模なプロジェクトではjavascriptの依存関係について追跡し、クリーンなアーキテクチャを持つことができます。
JSAnalyseは、コマンドラインツールとして実行またはVisual StudioレイヤーDiagrammを介して設定することができます。ビルドに統合することも容易です。ゲート付きのチェックインを使用すると、管理下に依存関係を維持することができます。
私たちの SDのECMAScript CloneDR には、正確な検索や近ためのツールです大規模なJavaScriptのソースコードベース全体で重複したコードのコピーを逃しています。
変数の名前を変更し、さらにいくつかの挿入/文を削除し、それは検出を導くために、言語の構文を使用していますので、フォーマット変更、挿入/削除されたコメントにもかかわらず、クローンを見つけます。
このサイトは、Googleの閉鎖ライブラリ上で動作するサンプルCloneDRを持っています。
全開示、私はこの後ろだ: http://www.toptensoftware.com/minime縮小、難読化や糸くずのスタイルチェックの合理的なセットを行います。