废弃代码打标工具收集生产运行的Java方法信息,对代码库中不在运行的代码进行标记,辅助进行废弃代码的删除和清理。
- JDK 1.8+
- apache-maven-3.8.3
#进入项目的根目录,执行如下命令。
mvn -DskipTests clean package -Pprod
- 构建生成dead-code-dump/target/dead-code-dump-版本号.jar,用于连接到目标JVM,获取执行的方法。 可以将该jar与应用部署到统一虚拟机或者DOCKER容器中。并在应用停止时(比如在stop.sh中)执行该jar
- 构建生产dead-code-mark-server/target/dead-code-mark-server-assembly/dead-code-mark-server.zip,是服务端,用于:
- 接受客户端上传的方法记录文件,
- 按应用进行文件合并;
- 提供应用和代码仓库的管理功能;
- 对代码仓库执行废弃代码打标;
准备(假设我们的目录是/var/export/apps/):
- 将dead-code-mark-server.zip拷贝到应用服务器/export/apps目录下,
- apache-maven-3.8.3-bin.tar.gz拷贝到应用服务器/export/apps目录下,
- 执行解压缩:
cd /var/export/apps/
# 解压
unzip dead-code-mark-server.zip
tar -xzfv apache-maven-3.8.3-bin.tar.gz
# 启动
sh /var/export/apps/dead-code-mark-server/bin/startup.sh
- 在JVM停止前运行脚本将JVM运行的方法记录上传到OSS
- 通过HTTP接口触发JVM运行方法记录的文件合并
- 通过HTTP接口触发代码仓库的废弃方法打标
java -cp ${JAVA_HOME}/lib/sa-jdi.jar:dead-code-dump.jar com.jd.jdt.std.deadcode.common.SaApp $pid $appName $uploadUrl
#例如
#$JAVA_HOME/bin/java -cp $JAVA_HOME/lib/sa-jdi.jar:dead-code-dump-2.0.13-SNAPSHOT.jar com.jd.jdt.std.deadcode.common.SaApp 10660 dead-code-mark-server http://localhost:8019/upload
其中参数说明如下: pid: 目标Java进程的PID appName: 应用唯一标识,用于区分不同的应用,不重复即可 uploadUrl: 我们上一步部署的服务端提供的地址,一般为http://IP:PORT/upload
curl -X GET http://IP:PORT/agg/agg?agg=您的appName
curl -X POST http://IP:PORT/mark/repo
curl -X POST POST http://IP:PORT/mark/repo
-H "Content-Type: application/json"
-d '{"prefixOfNewBranch": "schedule","repoPath": "git@server:your-group/your-app.git","invokedMethodQuery":[{"queryFrom": "OSS","invokedMethodStaticPath": ["deadcode/result/your_app.txt"]}]}'
Email: [email protected]
废弃代码打标工具采用Apache License 2.0协议,详情LICENSE