gpt4 book ai didi

java - 如何在 pom 中查找未使用的属性

转载 作者:搜寻专家 更新时间:2023-10-31 20:29:46 26 4
gpt4 key购买 nike

在继承一个maven项目后,我想检查未使用的属性并删除它们。

我不想采用的一种方法是将它们一个一个地删除,然后看到构建失败。另一种方法是使用自定义脚本计算整个代码库中的出现次数(以确保过滤器和资源的属性不会被错误地视为未使用)。在我这样做之前,我想确保我没有重新发明轮子。

有一种方法可以对解释的依赖项执行此操作 here .
我错过的属性是否有类似的东西?或者更好的方法?

谢谢

我正在使用 maven 3.0.3

最佳答案

这有点复杂,但这里有一个 bash 脚本,它将解析 pom.xml 中的属性元素,检查 pom 中是否使用了每个属性,并可选择检查所有项目文件(深度搜索)。

#!/bin/bash
cmd=$(basename $0)

read_dom () {
local IFS=\>
read -d \< entity content
local retval=$?
tag=${entity%% *}
attr=${entity#* }
return $retval
}

parse_dom () {
# uncomment this line to access element attributes as variables
#eval local $attr
if [[ $tag = "!--" ]]; then # !-- is a comment
return
elif [[ $tag = "properties" ]]; then
in=true
elif [[ $tag = "/properties" ]]; then
in=
elif [[ "$in" && $tag != /* ]]; then #does not start with slash */
echo $tag
fi
}

unused_terms () {
file=$1
while read p; do
grep -m 1 -qe "\${$p}" $file
if [[ $? == 1 ]]; then echo $p; fi
done
}

unused_terms_dir () {
dir=$1
while read p; do
unused_term_find $dir $p
done
}

unused_term_find () {
dir=$1
p=$2
echo -n "$p..."
find $dir -type f | xargs grep -m 1 -qe "\${$p}" 2> /dev/null
if [[ $? == 0 ]]; then
echo -ne "\r$(tput el)"
else
echo -e "\b\b\b "
fi
}

if [[ -z $1 ]]; then
echo "Usage: $cmd [-d] <pom-file>"
exit
fi

if [[ $1 == "-d" ]]; then
deep=true
shift
fi

file=$1
dir=$(dirname $1)

if [ $deep ]; then
while read_dom; do
parse_dom
done < $file | unused_terms $file | unused_terms_dir $dir
else
while read_dom; do
parse_dom
done < $file | unused_terms $file
fi

脚本使用来自 this thread 的 XML 解析代码.

此脚本不会找到任何由 maven 或 maven 插件直接使用的属性。它只是在项目文件中查找模式${property}

它适用于我的 mac;您的里程可能会有所不同。

关于java - 如何在 pom 中查找未使用的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12420505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com