@dkatzel の回答に同意することを伝えなければなりません。本当に必要なのは難読化ではないようです。私の理解では、難読化とは、コードを理解しにくくすることです(セキュリティなどのさまざまな目的を達成するため、コピーを防止するためなど - 言及されているウィキペディアの記事は実際にそれを非常によく説明しています)。
したがって、ソースコードが正しく作成されていることを考えると(つまり、冗長な部分や役に立たないコードがないことを意味します)、(常識的に)難読化すると、実行パスを変更せずにコードがわかりにくくなります。これは、コードの難読化は通常、コードのパフォーマンスにまったく (またはほとんど) 影響を与えないことを意味します。これは、テスト用に生成したいものとは異なります。たとえば、この非常にクールな記事 ( http://www.kahusecurity.com/2011/brilliant-javascript-obfuscation-technique/ ) で提案されている種類の難読化は、まったく役に立ちませんよね? (つまり、Java ではなく Javascript に関するものであることは無視します)
したがって、すでに提供されている回答 (特に、Github での検索と ASM の使用に関する回答) が進むべき道だと思います。C コードの有名な難読化コード チャンピオンシップ ( http://en.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest ) があり、人々は創造性を発揮しようとしますが、おそらくそのソースには役に立たないコードが含まれています (それが主な意図ではありませんが)。テストで使用できます(Javaコードで同様のチャンピオンシップを見つけた場合-正直なところ、それをチェックしていませんでした)。
あなたの立場で言えば、.Java ファイルのランダムな有効な場所に無用なスニペットを直接挿入する、非常に単純なソース コード操作ツールを作成することも検討します。次のようなものを使用して、これらのスニペットを自分で定義できます。
- { System.out.println("Hello world!"); }
- {文字列; for(int i = 32; i < 127; i++) s += (文字) i; s = s.toUpperCase(); }
- { new Thread( new Runnable() { public void run() { System.out.println("Hello world again!"); } } ).start(); }
- 等
私たちは科学研究 (博士課程のプロジェクト) について話しているので、最初のプロトタイプの結果を簡単に再現することが重要であることに同意します。したがって、単純なテスト コードに役に立たないことがわかっているスニペットを追加するツールを用意することで、事前検証を行うことができます。ただし、将来的には、よく知られているソース コード (重要なオープン ソース プロジェクトなど) を処理し、removal-useless-code-tool に渡し、削除されたコードを提示し、最後にそのコードについて論理的に議論することも必要になるでしょう。削除されたビットは役に立たないだけでなく、変更されたバージョンのコードの出力を以前のものと比較して検証します(削除されたものなし)。
研究頑張ってね、相棒。:)
乾杯