说明:讨论研发,QA流程是否规范的 goto end
场景:java开发,公司QA在测试应用时,有时为点小问题加快速度测试(研发环境不方便测试),研发并不会重新tag送测而是直接给几个class给QA先验证下
麻烦一:QA需要手工备份原来的class并将新class替换原来的class。
麻烦二:研发需要将包路径告知QA,QA需要手工一个一个放,遇到class 较多时容易出错。
麻烦三:。。。。
工具实现的功能及方法:
1、javap反编译,结合grep/sed 获取到包路径。
2、完成class的备份及复制。
脚本如:
echo "###############################class 解析复制工具#####################################" echo "##解析当前目前下所有.class文件,并复制到对应包路径;如文件存在则先备份再复制 #" echo "##使用方法: #pp.sh <path> path:class根目录,即类都将复制到以这个为根目录的对应包下。#" echo "##################################hzdev###############################################" binPath=$1 if [ ! -n "$binPath" ]; then echo 未指定class根目录,程序退出 exit 0 #binPath=pwd|sed 's/ //g' fi echo ============class根目录:$binPath timeStamp=`date '+%s'` for f in *.class do ################ # echo ========Current class:$f className=$(echo "$f"|sed -e's/\.class//g') className_=$(echo $className| sed 's/\$.*//g') package=$(javap $className|grep -oP '(?<=class ).*(?=\.'$className_'.* extends)'|sed -e's/\./\//g') #echo "className:"$className #echo "package:"$package classFile="$binPath"/"$package"/"$f" classPath="$binPath"/"$package" # echo $classFile #check path exists if [ ! -d "$classPath" ];then echo =====目录$classPath不存在,创建目录 mkdir $classPath -p fi #check class file exists if [ ! -f "$classFile" ]; then echo "复制文件$f------------>$classFile" cp $f $classFile else bakFile="$classFile"."$timeStamp" echo "=======>class文件存在,备份为 $bakFile" echo "复制文件$f------------>$classFile" mv $classFile $classFile.$timeStamp cp $f $classFile fi echo "******************************************************************************************" done