{"id":23136499,"url":"https://github.com/dengshiwei/asm-module","last_synced_at":"2025-04-07T11:09:19.984Z","repository":{"id":41479692,"uuid":"287941175","full_name":"dengshiwei/asm-module","owner":"dengshiwei","description":"✈️ ASM 4 教程中的示例代码，用于 ASM 学习，介绍了 ASM 中基本的使用说明。","archived":false,"fork":false,"pushed_at":"2022-01-18T02:43:40.000Z","size":2786,"stargazers_count":314,"open_issues_count":1,"forks_count":59,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T10:04:34.158Z","etag":null,"topics":["asm","asmdemo","methodvisitor"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dengshiwei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-16T12:39:05.000Z","updated_at":"2025-03-26T05:38:58.000Z","dependencies_parsed_at":"2022-07-17T00:16:28.273Z","dependency_job_id":null,"html_url":"https://github.com/dengshiwei/asm-module","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dengshiwei%2Fasm-module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dengshiwei%2Fasm-module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dengshiwei%2Fasm-module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dengshiwei%2Fasm-module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dengshiwei","download_url":"https://codeload.github.com/dengshiwei/asm-module/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640465,"owners_count":20971557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asm","asmdemo","methodvisitor"],"created_at":"2024-12-17T12:21:06.186Z","updated_at":"2025-04-07T11:09:19.951Z","avatar_url":"https://github.com/dengshiwei.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# asm-module\n本工程中主要是针对 ASM 4 教程中的示例代码整合而来，将每个示例代码片段整合成可运行的 `Java` 运行程序，方便初学者学习使用。\n- 基础入门介绍文章[AOP 利器 ASM 基础入门](doc/blog/AOP%20利器%20ASM%20基础入门.md)\n- ASM 开发指南中文译文：[ASM 6 开发者指南](doc/ASM6%20开发者指南/ASM%206%20开发者指南.md)\n- 个人总结的额外案例：[asm-example](https://github.com/dengshiwei/asm-example)\n\n## 章节目录\n\n### [第 2 章](asm_example/src/main/java/com/andoter/asm_example/part2)\n#### 2.2 接口与组件\n- [2.2.1 ClassReader 读取](asm_example/src/main/java/com/andoter/asm_example/part2/ClassReaderDemo.kt)\n- [2.2.2 ClassVisitor 分析类](asm_example/src/main/java/com/andoter/asm_example/part2/ClassPrintVisitor.kt)\n- [2.2.3 ClassWriter 生成类](asm_example/src/main/java/com/andoter/asm_example/part2/ClassWriteDemo.kt)\n- [2.2.4 转换类](asm_example/src/main/java/com/andoter/asm_example/part2/ConvertDemo.kt)\n- [2.2.5 移除类成员](asm_example/src/main/java/com/andoter/asm_example/part2/RemoveDebugDemo.kt)\n- [2.2.6 添加类成员](asm_example/src/main/java/com/andoter/asm_example/part2/AddFieldDemo.kt)\n- 额外补充\n    - [FieldVisitor](asm_example/src/main/java/com/andoter/asm_example/field/FieldVisitorDemo.kt)\n    - [CheckFieldInsn](asm_example/src/main/java/com/andoter/asm_example/field/CheckFieldInsn.kt)\n    - [TraceFieldInsn](asm_example/src/main/java/com/andoter/asm_example/field/TraceFieldInsn.kt)\n\n#### 2.3 工具\n- [2.3.1 Type](asm_example/src/main/java/com/andoter/asm_example/part2/TypeDemo.kt)\n- [2.3.2 TraceClassVisitor](asm_example/src/main/java/com/andoter/asm_example/part2/TraceClassVisitorDemo.kt)\n- [2.3.3 CheckClassAdapter](asm_example/src/main/java/com/andoter/asm_example/part2/CheckClassAdapterDemo.kt)\n\n### [第 3 章](MethodVisitor)\n#### 3.1 结构\n- [3.1.3 字节码指令](asm_example/src/main/java/com/andoter/asm_example/part3/字节码指令)\n\n#### 3.2 接口与组件\n- [3.2.1 MethodVisitor](asm_example/src/main/java/com/andoter/asm_example/part3/MethodPrint.kt)\n- [3.2.2 生成方法](asm_example/src/main/java/com/andoter/asm_example/part3/GenerateMethod.kt)\n- [3.2.3 转换方法](asm_example/src/main/java/com/andoter/asm_example/part3/RemoveNopAdapter.kt)\n- [3.2.4 无状态转换](asm_example/src/main/java/com/andoter/asm_example/part3/AddTimerAdapter.kt)\n- [3.2.5 有状态转换](asm_example/src/main/java/com/andoter/asm_example/part3/RemoveAddZeroAdapter.kt)\n\n#### 3.3 工具\n- 3.3.1 基本工具\n    - [1. Type](asm_example/src/main/java/com/andoter/asm_example/part3/TypeDemo.kt)\n    - [2. TraceMethodVisitor](asm_example/src/main/java/com/andoter/asm_example/part3/TraceMethodVisitorDemo.kt)\n- 3.3.2 AnalyzerAdapter\n    - [AddTimerMethodAdapter2](asm_example/src/main/java/com/andoter/asm_example/part3/AddTimerAdapter2.kt)\n    - [AddTimerMethodAdapter3](asm_example/src/main/java/com/andoter/asm_example/part3/AddTimerAdapter3.kt)\n- 3.3.3 LocalVariablesSorter\n    - [AddTimerMethodAdapter4](asm_example/src/main/java/com/andoter/asm_example/part3/AddTimerAdapter4.kt)\n    - [AddTimerMethodAdapter5](asm_example/src/main/java/com/andoter/asm_example/part3/AddTimerAdapter5.kt)\n- [3.3.4. AdviceAdapter](asm_example/src/main/java/com/andoter/asm_example/part3/AddTimerAdapter6.kt)\n\n### [第 4 章](asm_example/src/main/java/com/andoter/asm_example/part4)\n#### 4.1 泛型\n- [4.1.2 接口与组件 SignatureVisitor](asm_example/src/main/java/com/andoter/asm_example/part4/SignatureGeneric.kt)\n\n#### 4.2 注解\n- 4.2.2 接口与组件\n    - [AnnotationVisitor 基础](asm_example/src/main/java/com/andoter/asm_example/part4/AnnotationPrinter.kt)\n    - [删除注解 RemoveAnnotationAdapter](asm_example/src/main/java/com/andoter/asm_example/part4/AnnotationDemo.kt)\n    - [添加注解 AddAnnotationAdapter](asm_example/src/main/java/com/andoter/asm_example/part4/AddAnnotationAdapter.kt)\n    \n- 4.2.3 工具\n    - [创建注解类 DeprecatedDump](asm_example/src/main/java/com/andoter/asm_example/part4/DeprecatedDump.kt)\n    - [TraceAnnotationVisitor](asm_example/src/main/java/com/andoter/asm_example/part4/TraceAnnotationVisitorDemo.kt)\n    - [CheckAnnotationAdapter](asm_example/src/main/java/com/andoter/asm_example/part4/CheckAnnotationAdapterDemo.kt)\n    \n### [第 5 章](asm_example/src/main/java/com/andoter/asm_example/part5)\n- [向后兼容/向下兼容](asm_example/src/main/java/com/andoter/asm_example/part5/向后兼容)\n\n### [第 6 章](asm_example/src/main/java/com/andoter/asm_example/part6)\n- 6.1 接口组件介绍\n    - [6.1.1 基本介绍](asm_example/src/main/java/com/andoter/asm_example/part6/TreeAPI.kt)\n    - [6.1.2 生成类](asm_example/src/main/java/com/andoter/asm_example/part6/CreateClass.kt)\n    - 6.1.3 添加删除类成员\n        - [删除类成员](asm_example/src/main/java/com/andoter/asm_example/part6/RemoveMethodDemo.kt)\n        - [添加类成员](asm_example/src/main/java/com/andoter/asm_example/part6/AddFieldDemo.kt)\n- 6.2 组件合成\n    - [6.2.1 基本介绍](asm_example/src/main/java/com/andoter/asm_example/part6/TreeAPI.kt)\n    - [6.2.2 模式](asm_example/src/main/java/com/andoter/asm_example/part6/PatternDemo.kt)\n    \n### [第 7 章](asm_example/src/main/java/com/andoter/asm_example/part7)\n- 7.1 接口与组件\n    - [7.1.1 介绍](asm_example/src/main/java/com/andoter/asm_example/part7/MethodNodeAPI.kt)\n    - [7.1.2 生成方法](asm_example/src/main/java/com/andoter/asm_example/part7/MakeMethod.kt)\n    - 7.1.4 无状态转换和有状态转换\n        - [AddTimerTransformer](asm_example/src/main/java/com/andoter/asm_example/part7/AddTimerTransformer.kt)\n        - [RemoveGetFieldPutFieldTransformer](asm_example/src/main/java/com/andoter/asm_example/part7/RemoveGetFieldPutFieldTransformer.kt)\n        - [RemoveGetFieldPutFieldTransformer2](asm_example/src/main/java/com/andoter/asm_example/part7/RemoveGetFieldPutFieldTransformer2.kt)\n    - 7.1.5 [全局转换](asm_example/src/main/java/com/andoter/asm_example/part7/OptimizeJumpTransformer.kt)\n- 7.2 组件与合成\n    - [7.2.2 模式](asm_example/src/main/java/com/andoter/asm_example/part7/MyAdapter.kt)\n    \n### [第 8 章](asm_example/src/main/java/com/andoter/asm_example/part8)\n- [8.1 介绍](asm_example/src/main/java/com/andoter/asm_example/part8/AnalyzerClass.kt)\n- 8.2 接口与组件\n    - [8.2.1 基本数据流分析](asm_example/src/main/java/com/andoter/asm_example/part8/RemoveDeadCode.kt)\n    - [8.2.2 基本数据流校验器](asm_example/src/main/java/com/andoter/asm_example/part8/BasicVerifierAdapter.kt)\n    - [8.2.3 简单数据流校验器](asm_example/src/main/java/com/andoter/asm_example/part8/RemoveUnusedCastTransformer.kt)\n        - [RemoveUnusedCastAdapter](asm_example/src/main/java/com/andoter/asm_example/part8/RemoveUnusedCastAdapter.kt)\n    - [8.2.4 自定义数据流分析](asm_example/src/main/java/com/andoter/asm_example/part8/IsNullInterpreter.kt)\n    - [8.2.5 控制流分析](asm_example/src/main/java/com/andoter/asm_example/part8/CyclomaticComplexity.kt)\n    \n### [第 9 章](asm_example/src/main/java/com/andoter/asm_example/part9)\n- [9.1 泛型](asm_example/src/main/java/com/andoter/asm_example/part9/SignatureVisitorAdapter.java)\n- [9.2 注解](asm_example/src/main/java/com/andoter/asm_example/part9/AnnotationNodeAdapter.kt)\n\n### [第 10 章](asm_example/src/main/java/com/andoter/asm_example/part10)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdengshiwei%2Fasm-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdengshiwei%2Fasm-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdengshiwei%2Fasm-module/lists"}