私たちはレガシー Web アプリをリファクタリングしており、その結果、かなりの数の JavaScript コードを "kill" しています。JavaScript のデッド コードを確実に特定するためのツール/手法はありますか?
8 に答える
複雑すぎるものを探すことなく:
- JSLint (実際には静的アナライザーではありませんが、連結された開発コードを与えると、少なくとも明白なスコープ コンテキストでは、どのメソッドが呼び出されないかがわかります)
- Google クロージャ コンパイラ
- Google クロージャー リンター
grepがあります。関数呼び出しを見つけるために使用します。というメソッドがあるとしますdostuff()
。grep -r "dostuff()" * --color
プロジェクトのルート ディレクトリで使用します。定義以外のものが見つからない限り、安全に消去できます。
ackは、 grepの注目すべき代替手段でもあります。
JetBrains の WebStorm IDE は、プロジェクト内のデッドコードと未使用の変数を強調表示できます。
コード オプティマイザーをGoogle Closure Compilerとして使用できますが、コードを最小化するためによく使用されます。
function hello(name) {
alert('Hello, ' + name);
}
function test(){
alert('hi');
}
hello('New user');
結果として
alert("Hello, New user");
例えば。
もう 1 つの方法は、Chrome の Developer Tools (または Firebug) を使用してすべての関数呼び出しを確認することです。プロファイルの下で、時間の経過とともにどの関数が呼び出され、どの関数が呼び出されていないかを確認できます。
これを自動化したい場合は、https://github.com/joelgriffith/navaliaを参照してください。自動化された API が公開されており、これを行うことができます。
const { Chrome } = require('navalia');
const chrome = new Chrome();
chrome.goto('http://joelgriffith.net/', { coverage: true })
.then(() => chrome.coverage('http://joelgriffith.net/main.bundle.js'))
.then((stats) => console.log(stats)) // Prints { total: 45913, unused: 5572,
percentUnused: 0.12135996340905626 }
.then(() => chrome.done());
詳細はこちら: https://joelgriffith.github.io/navalia/Chrome/coverage/