問題タブ [java-bytecode-asm]
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.
java - 実行時に複数の Java クラスを ASM と組み合わせる
複数の Java クラスを 1 つにマージしたいと考えています。ASM のドキュメントとhttp://www.jroller.com/eu/entry/merging_class_methods_with_asmを読みましたが、目標を達成する方法がわかりません。
これに関するより詳細な例はありますか?
ありがとう
java - ASM-Bytecodeの訪問者を数人積み上げる簡単な方法はありますか?
私は現在、クラスのメソッドごとに、バイトコードをインストルメント化するために、.classファイルに対して数人の訪問者を実行する必要があるコードを実装しています。現時点では、MethodRenamerVisitorを実装したばかりですが、これはすでにかなり厄介になっています。
現在、他の訪問者を各BytecodeMethodsに適用したいと考えています。私はこれを過度に複雑にしていますか?私が次のような形をとることができれば理想的です。
そのため、実行したいすべての訪問者を簡単にスタックでき、最終的にはそれらをディスクに保存する必要があります。訪問者の一人一人が訪問しているメソッドを追加/削除/変更することを覚えておいてください!
java - Eclipseは、ASM4.0で非通知パラメーター名を表示します。これを修正する方法は?
EclipseIDEからASM4.0を使用する場合、取得するのは次の非通知パラメーター名だけです。
どうすればこれを修正できますか?過去にライブラリのソースコードの一部を調べたことがありますが、覚えている限り、それらは本物の名前を持っているように見えたので、これは私がロードしていないものに違いないと思いますか?
R:JavaDocをアタッチすると、変数名の問題が解決したようです。ただし、明確にするための小さな謎がまだあります。
APIを使用する場合、ClassNode.methodsはList型であるように見えます。しかし実際には、そのソースコードを見ると、実際にはリストであることがわかります。
他に足りないものはありますか?この問題は、Javaのジェネリックスの具体化の欠如に関連している可能性があることを認識しています。これらのリストが実際に何を表しているかを知るには、他の種類の情報が必要ですか?
java - ASMバイトコードを使用したテスト
メソッドの一部にいくつかの命令を追加したいクラスをインストルメントしているとしましょう。たとえば、訪問者V
を開発して、メソッドに存在するメソッド呼び出し命令の名前をからに変更しC.m()
たい場合を考えてみましょC.n()
うC.n_detour()
。
V
実行した後C
、実際に望ましい結果が得られることをテストする最も簡単な方法は何でしょうか?ここでは、xUnitスタイルのテストについて話しています。
TraceMethodVisitor
最初は、ひっくり返して自分の文字列と比較できると思いC
ましたが、テストとはほとんど関係のない「装飾」命令(行番号など)がたくさんあることがわかりました(を参照)。TraceClassVisitorの出力をフォーマットします)。
C.n_detour()
理論的には、aの存在と非存在の両方を実行してチェックする訪問者を作成できることはわかっていC.n()
ますが、上記のアプローチに沿ったものを使用したいと思います(命令ごとの命令を比較します)。
ASMのTreeAPIを調べましたが、それらのdecoration
手順もそこに表示されているため、それほど良くは見えません。
ASMを使用した過去のコードテストの経験がある人はいますか?
java - TraceClassVisitor の出力のフォーマット
asm ライブラリを使用してメソッドのバイトコードをきれいに印刷したいとしましょう。
を通じてTraceClassVisitor
次のようになります
今、事は私が気にすることだけです
他のすべては私にはほとんど関係がないので、それらを一掃したいと思います。
を継承して不要なものをフィルタリングすることを考えましTraceMethodVisitor
たが、実際には final クラスであることが判明しました (残念!)。
の出力をフォーマットする方法はありますTraceClassVisitor
か? そうでない場合、私が気にしないものを除外するための最良のアプローチは何だと思いますか?
java - ASM バイトコードでメソッドをきれいに印刷する
特定のメソッドの内容のみを印刷しようとしています (成功していません) 。次のコードは、ほとんどのトリックを行います。
で実行する
その結果
私が手に入れたかったのはただ
署名、コメント、その他一切なし。どうすればそれを達成できますか?
eclipse - Eclipse: エラー (Bytecode Outline) SOURCE FILE [in PROJECT] がプロジェクトのビルド パス上にありません
ASM Eclipse プラグインをインストール (および再起動) したところ、バイトコード アウトラインが改善され、JRE クラスに使用できますが、自分のコードを見ると、タイトルにエラー メッセージが表示されます。
私の Java プロジェクトは [自動ビルド] にあり、ソース ファイルにエラーはなく、プロジェクトのプロパティの Java ビルド パスで定義されたデフォルトの出力フォルダーにクラス ファイルが表示されます。
java - Polymorphic call: resolving target method from bytecode
Given Java bytecode and ASM bytecode analysis framework,
how can I resolve a target method when polymorphic call occurs?
For instance:
The following bytecode is generated for the latter line:
This instructure targets a parent method.
But the actual method is ClassB.foo()
.
How can I resolve the "real" method that will be called?
java - Dalvik 用の ASM または CGLIB アナログ
Dalvik バイトコードに使用できる CGLIB アナログを探しています。Androidの世界にそのようなライブラリはありますか?
おそらく、CGLIB の結果をその場で Davlik バイトコードに変換する方法はありますか?
java - Javaでのエイリアス解析
誰かが私にJavaのエイリアス解析のフレームワークまたは実装を教えてもらえますか?asmフレームワークを見ましたが、データフロー分析と制御フロー分析しか提供していません。
更新:興味がありますが、Findbugsがエイリアス分析を行うかどうか誰かが知っていますか?