6

Crockford のJSLINTでは、JavaScript ソースを解析するために呼び出した後、以下JSLINT()を介して解析ツリーへのアクセスを提供します。JSLINT.tree

ツリーを分析し、分析に基づいて構造を変更し、変更されたツリーから新しい JavaScript を生成できれば、非常に強力です。

解析ツリーから JavaScript への変換を提供することによって JSLINT を構築するオープン ソース プロジェクトはありますか?

(これは可能ですか?つまり、JSLINTは解析から重要なものすべてを往復するのに十分な完全な情報を保持していますか?)

4

2 に答える 2

3

JSLintがそれを実行できるかどうかはわかりません(フォーラムの投稿のいくつかを見ると、ツリーを維持することが彼らの目標ではないように見えますが、lintプロセスを実行するための副産物です)。

uglifyjsプロジェクトは、javascript から AST を生成し、AST をコードに再変換するのに役立ちます。AST から JavaScript へのこのメソッドを参照してください。

于 2012-02-04T12:28:12.483 に答える
1

オープンソースではありませんが、OP が要求することを正確に実行します: JavaScript フロントエンド.

このフロント エンドは、 DMS Software Reengineering Toolkitに基づいています。これは、任意のコード アナライザーおよびトランスフォーマーを構築するのに役立つ、カスタマイズ可能な汎用コンパイラ テクノロジです。DMS には、多くの言語 (COBOL、Java、C++ など) で使用できる多くのフロント エンドがあります。

特に、DMS ベースのパーサー (JavaScript パーサーを含む) は、ソース ツリーを再生成するための完全な情報を収集します。これには、トークンの列の開始と終了の情報、数値リテラルの基数、文字列引用規則の違いなどが含まれます。変換が適用されていない忠実な印刷を行います。DMS は、ビジター、シンボル テーブル構築のサポート、フロー分析のサポート、パターン マッチング、ソースからソースへの変換など、ツリー処理に役立つ他の多くのサービスも提供します。

これらすべてのサービスを提供できるのは、エンジニアリングのコストが非常に多くの言語とアプリケーションで償却されているためです。

ダニエルが言ったように、「可能性は無限大」だからです。彼は、ランタイム エラーを監視するためにコードをインストルメント化する例を示しています。この種のインストルメンテーションは非常に有用なアイデアであり、まさにこの考えに基づいてテスト カバレッジ ツールを構築しています。

于 2012-02-04T16:43:34.523 に答える