問題タブ [dead-code]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NETは複数のソリューションでデッドコードを検出します
多数のプロジェクトごとに最大15のソリューションを備えた製品があります。
質問は非常に単純です。コードベース全体でデッドコードを検索できるツールはどれですか。
単一のソリューション内での検索は非常に簡単です(そのソリューションのSOに関する多くの回答)。
しかし、AlphaSol自体の中で使用されていないソリューションAlphaSolのプロジェクトAlphaProjの "public void Foo()"が実際にBetaSolなどで使用されているかどうかを判断するのはどうでしょうか。
c - 静的分析により、Cプロジェクトで未使用の関数を検索します
Cプロジェクトで静的分析を実行して、デッドコード、つまり、呼び出されることのない関数やコード行を特定しようとしています。このプロジェクトは、Windows用のVisual Studio .Net、またはLinux用のgccを使用してビルドできます。私は私のためにこれを行うことができるいくつかの合理的なツールを見つけようとしてきましたが、今のところ私は成功していません。Stack Overflowに関する関連する質問、つまりこれとこれを読み、gccで使用しようとしまし-Wunreachable-code
たが、gccでの出力はあまり役に立ちません。次の形式です
しかし、my_socket.c
の666行目を見ると、実際には関数my_sockNtoH32()から呼び出されている別の関数内にあり、この特定のインスタンスでは実行されませんが、他の関数から呼び出されたときに実行されます。
私が必要としているのは、決して実行されないコードを見つけることです。誰かplzはこれを手伝うことができますか?
PS:このタスク用のツールを購入するように経営陣を説得することはできないので、フリー/オープンソースツールに固執してください。
javascript - Javascript からデッド コードを削除する方法
プロジェクトから未使用の関数を削除しようとしています。何千もの行があるため、これには永遠に時間がかかります。
コード カバレッジ ツールは、特定のテスト ケースで使用されていない関数を提案する場合がありますが、これだけに頼るのは危険な場合があります。
これに役立つ別のツールはありますか?
java - AspectJ を使用して Java で使用されていないコードを見つける
大規模な Java プロジェクトで使用されていない (「デッド」) メソッドを見つける方法を考えていますが、実装を導き出すには助けが必要です。
- AspectJ を使用して、プロジェクト パッケージ内のすべてのメソッドに「前」のアスペクトを追加します。アスペクトは、メソッドが実行されたことを単に記録 (?) します。
- プロジェクト パッケージ内のすべてのクラス/メソッドのリストをコンパイルします (おそらくサービス ロケーター/リフレクションを使用します)。
- アドバイスされたコードは、完全な回帰テストを受けます。理想的には、これをしばらく本番環境に置きたいと思います (適切にパフォーマンスの高いソリューションが見つかった場合)。
- 実行されたメソッド (ステップ 1) と使用可能なメソッド (ステップ 2) のリストが比較され、呼び出されなかったすべてのメソッド (つまり、デッド コード) の包括的なリストが生成されます。
ステップ 2 と 4 はオフラインで実行できるため、実際にはステップ 1 のサポートのみを求めています。
具体的には、メソッドが実行されたときにどのように記録できますか? 何らかの種類のメモリ内ストレージを試みると、すぐに OutOfMemoryErrors に遭遇することになると思います。同様に、データをデータベースやファイル システムに保存すると、呼び出しの量が原因でパフォーマンスに大きな問題が発生する可能性があります。誰かが似たようなことをしたことがありますか?アドバイス/提案をいただければ幸いです。
ios - Xcodeアナライザーによるデッドコード
私は自分のプロジェクトを分析したかったのですが、xcode アナライザーが rootcontroller Xcode でデッド コードを見つけて、次のように教えてくれました:
誰かが私にこれとそのコードをきれいにする方法を説明できますか、ありがとう....
ここに私の rootcontroller.m があります
java - エンタープライズ Java プロジェクト (Java + JSP + Javascript) でデッド コードを検出するにはどうすればよいですか?
Java EE プロジェクトでデッド コードを検出するツールを知っている人はいますか?
純粋な Java プロジェクトでこれをうまく行うツールをたくさん調べましたが、JSP や Javascript ファイルを含むプロジェクトを実際に処理するツールはないようです。たとえば、Java メソッドが JSP から呼び出されているために使用されていることを検出したり、以前は AJAX 要求として使用されていた JSP ファイルが Javascript から呼び出されなくなったことを検出したりします。
ありがとう。
c - AST、CFG、CLANG とは何ですか? デッドコード除去アルゴリズムでどのように使用できますか?
私たちのチームと一緒に、オンライン イベント用に C 言語を使用してデッドコード除去アルゴリズムを作成しようとしています。
要件は.....
- C プログラムのソース ファイルを読み取るには、多くの形式のデッド コードが含まれています。
- そして、出力はすべてのデッドコードのないファイルである必要があります。
インターネットをサーフィンしているときに、SOリンクに出くわしました...
コード内のどの部分がまったく使用されていないかを知るにはどうすればよいですか?
これらのリンクを見る前に、基本的なアイデアがありました... 通常のファイル ストリームを使用して入力 C ファイルを 1 行ずつ読み取り、文字列配列に格納します。次に、これらの文字列を分析し、if(0) や if(1) などの非常に基本的なデッド コードを特定します。そして、括弧を維持するためのスタックを作成します。そしてもっと...
しかし、これには大きな問題があります。このアイデアは、デッドコードを削除するよりも、文字列操作でより多くのことを行うことにつながります。
しかし、これらのリンクを見た後... Clang ライブラリ、抽象構文ツリー、Control-Flow-Graph などについて知るようになりました...
しかし、私たちはそれらのライブラリとそれらの概念について非常に初心者です。それらが C コードの解析に使用されていることがわかりました。
したがって、これらのAST、CFGに関するいくつかの基本的なアイデアと、コードでそれをどのように使用できるかを説明する基本的なガイダンスが必要です...
そのclangライブラリをmath.hのような通常のライブラリとして含めることはできますか?
そのライブラリはどこからダウンロードできますか?
これらの Clang ライブラリを Windows で使用できますか?
c - 私のより単純なデッドコードリムーバー
私は非常に簡単な方法でデッドコードリムーバーの刺激を行っています。
そのために私の考えは、
ステップ1:入力Cプログラムを1行ずつ読み取り、二重リンクリストまたは配列に格納します(ファイル操作よりも削除と挿入が簡単になるため)。
疑い:私のアプローチは正しいですか?もしそうなら、毎回リンクリストのトラバースを最小限に抑える方法。
ステップ2:読み取られた文字列の分析は並行して実行され、変数名とその詳細、関数とその呼び出しなどを維持するためにテーブルが作成されます。
ステップ3:変数テーブルの各エントリに対して検索が実行され、変数はその時点の値に置き換えられます(現在の値)。(例えば)
しかし、次のような状況で..
ここで、「i」は別の変数に依存するため、置き換えられません。「a」はユーザー入力に依存するため、置き換えられません。
疑い:ユーザー入力がif(5 * 5 + 6){print hello;}の場合、それは確かに不要なチェックになります。この式を解いてコードを単純化するにはどうすればよいですか{printhello; }
ステップ4:文字列はif(0)、while(0)などで検索され、スタックを使用してアクションブロックが削除されます。if(0){//これは削除されます* /}
ステップ5:(例)function foo(){/ ** /} ... if(0)foo(); ...、すべてのデッドコードが削除されると、関数テーブルのfoo()のエントリがチェックされ、コードで参照される回数が取得されます。0の場合、同じスタック方式を使用してその関数を削除する必要があります。
ステップ6:残りの関数では、returnステートメントの下の行(存在する場合)は、「}」を除いて削除されます。この削除は、関数が終了するまで行われます。関数の終わりは、スタックを使用して識別されます。
ステップ7:そして、デッドフリーコードの準備ができたと仮定します。リンクリストまたは配列を出力ファイルに保存します。
私の質問は..1.私の考えが意味があるかどうか?またはそれは実装可能ですか?このアルゴリズムをどのように改善できますか?
2.このアイデアを実装しようとしている間、デッドコードを削除するのではなく、文字列の操作にもっと対処する必要があります。このアルゴリズムで文字列操作を減らす方法はありますか。
iphone - アプリのビルド時に使用されていないクラスは Xcode によってコンパイルされますか?
C++ で使用されていないものは、まったくコンパイルされません。iPhoneでも同じですか?プログラムをコンパイルして、未使用のクラスやその他のものがある場合、それはコンパイルまたは無視されますか?
java - Java while ループで到達できないステートメント
ここで「デッドコード」スレッドを検索しているとき に、Eclipseでデッドコードの警告が表示されます
次の簡単な Java コードを試しました。
コンパイル時エラーを正しくスローします
私はこれにコードを微調整しました:
そしてそれはうまくコンパイルされます。
これがうまくコンパイルされる理由はありますか?
論理的には、どちらも無限ループを引き起こし、両方ともコンパイル時エラーを引き起こすはずです。
私は何か間違ったことをしていますか?