第二のパスクラスは、メソッドの実行ロジックは、インストルメント

トレース・エントリーの方法があるMethodTracer

トレースのボイドパブリック(地図<ファイル、[ファイル]> [srcFolderList、地図<ファイル、[ファイル]> [dependencyJarList){
traceMethodFromSrc(srcFolderList);
traceMethodFromJar(dependencyJarListが);
}
コードをコピー
各ディレクトリを、ジャー計装パッケージ

プライベート無効innerTraceMethodFromSrc(ファイルの入力、ファイル出力){

...
もし(mTraceConfig.isNeedTraceClass(classFile.getName())){
ある=新しいFileInputStreamを(クラスファイル)。
ClassReader classReader =新しいClassReader(です)。
ClassWriter classWriter =新しいClassWriter(ClassWriter.COMPUTE_MAXS)。
ClassVisitor classVisitor =新しいTraceClassAdapter(Opcodes.ASM5、classWriter)。
classReader.accept(classVisitor、ClassReader.EXPAND_FRAMES)。
...
}

プライベートボイドinnerTraceMethodFromJar(ファイル入力ファイル出力){
...
IF(mTraceConfig.isNeedTraceClass(zipEntryName)){
InputStream InputStreamは= zipFile.getInputStream(またはZipEntry)。
ClassReader classReader =新しいClassReader(InputStreamの);
ClassWriter classWriter =新しいClassWriter(ClassWriter.COMPUTE_MAXS)。
ClassVisitor classVisitor =新しいTraceClassAdapter(Opcodes.ASM5、classWriter)。
classReader.accept(classVisitor、ClassReader.EXPAND_FRAMES)。
バイト[]データ= classWriter.toByteArray()。
入力ストリームれるByteArrayInputStream =新しいれるByteArrayInputStream(データ)。
ZipEntry newZipEntry =新しいまたはZipEntry(zipEntryName)。
FileUtil.addZipEntry(zipOutputStream、newZipEntry、するByteArrayInputStream)。
...

おすすめ

転載: www.cnblogs.com/liyanyan665/p/11291200.html