問題タブ [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.

0 投票する
21 に答える
166853 参照

java - Javaプロジェクトで未使用/デッドコードを見つける方法

大規模なJavaプロジェクトで未使用/デッドコードを見つけるためにどのツールを使用していますか?当社の製品は数年前から開発されており、使用されなくなったコードを手動で検出することは非常に困難になっています。ただし、未使用のコードは可能な限り削除するようにしています。

一般的な戦略/手法(特定のツールを除く)の提案も歓迎します。

編集:私たちはすでにコードカバレッジツール(Clover、IntelliJ)を使用していますが、これらはほとんど役に立ちません。デッドコードにはまだ単体テストがあり、カバーされているように表示されます。理想的なツールは、それに依存する他のコードがほとんどないコードのクラスターを識別し、ドキュメントの手動検査を可能にするだろうと思います。

0 投票する
8 に答える
36801 参照

c++ - 従来のC/C++プロジェクトでのデッドコードの検出

C / C ++コードでデッドコードを検出するにはどうすればよいですか?使用するコードベースがかなり大きく、少なくとも10〜15%がデッドコードです。この領域を識別するためのUnixベースのツールはありますか?一部のコードはまだ多くのプリプロセッサを使用していますが、自動化されたプロセスでそれを処理できますか?

0 投票する
3 に答える
4911 参照

c++ - Windows 上のネイティブ C++ アプリケーションでの自動デッド コード検出?

バックグラウンド

私はネイティブ C++ で数年間にわたって作成したアプリケーションを持っていますが、これは約 60 KLOC です。死んでいる関数やクラスはたくさんあります (以下の同様の Unix ベースの質問のように、おそらく 10 ~ 15% です)。私たちは最近、すべての新しいコードに対して単体テストを行い、可能な限り変更されたコードに適用することを開始しました。ただし、現時点でテスト カバレッジが 5% 未満である SWAG を作成します。

仮定/制約

メソッドおよび/またはツールは、以下をサポートする必要があります。

  • ネイティブ (つまり、アンマネージ) C++
  • WindowsXP
  • ビジュアル スタジオ 2005
  • カバレッジのためにユーザー提供のテスト ケースを要求してはなりません。(たとえば、コード カバレッジを生成するために単体テストに依存することはできません)

メソッドがこれらの要件を超えるものをサポートしている場合は、すばらしいことです。

注:現在、Team System ではなく、Visual Studio 2005 の Professional エディションを使用しています。したがって、Team System を使用することは有効な提案かもしれません (わからない、使用したことがありません) が、それが唯一の解決策ではないことを願っています。

コード カバレッジに単体テストを使用することが問題となる理由

私は、汎用ツールが任意のアプリケーションですべてのデッド (到達不能コードなど) を誤検出ゼロで見つけることは不可能だと考えています (これは停止問題と同等だと思います)。しかし、一般的なツールが、実際には死んでいる可能性が非常に高い多くの種類のデッドコードを見つけることも可能だと私は信じています。たとえば、クラスや関数がコード内で他から参照されることは決してありません。

単体テストを使用してこのカバレッジを提供することにより、一般的なアルゴリズムを使用しなくなり、検出できるデッド コードの割合と、ヒットが誤検知ではない確率の両方が増加します。逆に、単体テストを使用すると、単体テスト自体が特定のコード部分を実行する唯一のものである可能性があるため、偽陰性になる可能性があります。理想的には、外部で利用可能なすべてのメソッド、API、ユーザー コントロールなどを実行する回帰テストを行います。これは、コード カバレッジ分析のベースライン測定として機能し、特定のメソッドが誤検知になることを除外します。残念ながら、現時点ではこの自動テストは行っていません。

ただし、テスト ケースのカバー率が非常に低い非常に大きなコード ベースがあるため、テスト ケースの作成に膨大な時間を費やすことなく役立つものを探しています。

質問

Visual Studio 2005 開発環境を使用した Windows プラットフォーム上のネイティブ C++ アプリケーションで、自動化または半自動化された方法でデッド コードを検出するにはどうすればよいでしょうか?

関連項目

レガシ C/C++ プロジェクトでのデッド コードの検出 VC++ コンパイラにすべてのコードをコンパイルするように指示します。それはできますか?

0 投票する
7 に答える
13301 参照

c++ - デッド コードの識別 (C++)

Visual Studio 2008 でコンパイルされた大規模なレガシー C++ プロジェクトがあります。どこにもアクセスされない、かなりの量の「デッド」コード (呼び出されないメソッド、使用されないクラス全体) があることを知っています。

これを静的解析で特定するツールを探しています。

この質問:レガシ C/C++ プロジェクトでのデッド コード検出では、コード カバレッジ ツールの使用が提案されています。テストカバレッジが十分に高くないため、これはオプションではありません。

また、-Wunreachable-code についても言及しています。gcc のオプション。Visual Studio にも同様のものが欲しいです。既にリンカの /OPT:REF オプションを使用して冗長コードを削除していますが、これは有用なレベルでデッド コードを報告しません (/VERBOSE と一緒に使用すると、ライブラリからの多くを含めて 100,000 行を超えます)。

Visual Studio プロジェクトでうまく機能するより良いオプションはありますか?

0 投票する
2 に答える
385 参照

vhdl - ザイリンクスの「デッド コード」

クラス用に書いている VHDL コードがいくつかあります。ただし、合成ツールは cell3、cell2、および cell1 を「デッド」コードとして識別し、合成しません。

何が原因でセル 3,2,1 が合成で削除されるのか、私にはまったくわかりません。私はそれを5回以上レビューし、何人かの人に尋ねましたが、「理由」を見つけることができません.

解決策を探しているのではなく、理由への単なるポインタです。

0 投票する
8 に答える
486 参照

code-metrics - 「不要なコード」をどのように定義しますか?

「不要なコード」をどのように定義しますか?


編集:

IMHO、アクティブな呼び出しメンバーが 0 のコード メンバー (再帰的にチェック) は不要なコードです。(関数、メソッド、プロパティ、変数はメンバーです)

0 投票する
7 に答える
1318 参照

delphi - Delphiで未使用のイベントハンドラーを見つける方法はありますか?

Delphiでデッドコードを見つけるのは通常、非常に簡単です。コンパイルしてから、青い点がないルーチンをスキャンするだけです。スマートリンカーは、ほとんどの場合、それらを追跡するのに非常に優れています。

問題は、これはイベントハンドラーでは機能しないことです。これは、公開されたメソッドであり、実際にはほとんど発生しない場合でも、(理論的には)RTTIを介して呼び出すことができるためです。

私は、その歴史の中で何度も曲げられ、折り畳まれ、紡錘形にされ、切断された大きなVCLフォームユニットをクリーンアップしようとしています。フォームのDFMによって実際に参照されていないイベントハンドラーを見つけて削除する方法があれば、きっといいでしょう。これを行う簡単な方法はありますか?たとえば、プラグインIDEエキスパート?

0 投票する
0 に答える
269 参照

php - コードベースで未使用の PHP5 クラス/メソッドを見つける

重複の可能性:
PHP プロジェクトで使用されていない関数を見つけるにはどうすればよいですか

PHP5 で未使用のコードを確認するにはどうすればよいですか? 以下のようなものですか?

  • Reflectionを使用してクラスをスキャンする
  • 「通常の」コードに従いtoken_get_all()、トークン T_NEW を持つ変数を見つけてから、メソッド呼び出しをスキャンします。
  • 次のような出力classname (count of new declarations) methods (count of calls)
0 投票する
3 に答える
824 参照

c++ - 静的変数の初期化コードが呼び出されることはありません

私が作成した静的ライブラリを使用するアプリケーションがあります。ライブラリ内の 1 つの .cpp ファイルには静的変数宣言があり、その ctor は何かを行うシングルトンの関数を呼び出します。たとえば、文字列を追加します。

アプリケーションからそのライブラリを使用すると、シングルトンには、追加されるはずだった文字列の痕跡が含まれていないようです。

私は間違いなく何かを見逃していますが、何がわかりません..