java在消息资源文件中查找未使用的值
我正在做一个项目,这个项目是经过多方努力完成的,有时发展很快。随着时间的推移,这条信息逐渐消失。属性文件已与使用它的JSP不同步。现在我不知道使用了哪些属性,哪些没有。是否有一个工具(可能是eclipse插件)可以根除死掉的消息
你可以在下面搜索框中键入要查询的问题!
我正在做一个项目,这个项目是经过多方努力完成的,有时发展很快。随着时间的推移,这条信息逐渐消失。属性文件已与使用它的JSP不同步。现在我不知道使用了哪些属性,哪些没有。是否有一个工具(可能是eclipse插件)可以根除死掉的消息
# 1 楼答案
或者,您可以将
ResourceBundle
的功能隐藏在另一个façadeResourceBundle
后面,该façadeResourceBundle
通常会将所有调用传递到原始façade,但在顶部添加日志记录和/或统计信息收集示例如下所示:
# 2 楼答案
我知道至少有两个主要的JavaIDE可以提供这种功能
IntelliJ IDEA有一个(默认情况下已禁用)检查,您可以 用于执行此操作:
转到设置->;检查->;属性文件->。。。并启用 “未使用的财产”
。。我唯一的问题是,它没有从我编写的自定义标记库中获取属性的一些用法,我在一些JSP中使用了该库
Eclipse也有类似的功能(http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftasks-202.htm),但我还没有完全了解它的工作原理
# 3 楼答案
问题在于,消息可能由JSP或Java访问,资源名称可能是构造的,而不是文本字符串
简单的
grep
ping可以识别“明显的”资源访问。另一种解决方案是跟踪所用资源的资源查找机制,它也只是半可靠的,因为代码路径可能决定使用哪些资源,除非每条路径都经过,否则可能会错过一些这两者的结合将(随着时间的推移)捕捉到几乎所有的东西
# 4 楼答案
考虑到您的一些密钥是运行时生成的,我认为您永远无法找到一个工具来验证哪些密钥正在使用,哪些密钥没有使用
考虑到您提出的问题,我可能会编写一个AOP方面来包装MessageSource。getMessage()实现并记录从资源包中检索的所有请求代码。鉴于MessageSource是一个接口,您需要知道您正在使用的实现,但我怀疑您必须已经知道了
考虑到您将自己编写方面,您可以创建一种格式,该格式很容易与您的资源包相关联,并且一旦您确信它包含了所需的所有键,那么比较这两个文件并消除任何多余的行就成了一项微不足道的任务
如果你真的想彻底了解这一点,如果你已经为注释扫描配置了Spring,你甚至可以把你的aspect打包成自己的jar(或.class),放到生产WEB-INF/lib(WEB-INF/classes)文件夹中,重新启动webapp,让它运行一段时间。注释最棒的一点是,它可以是自包含的。一旦确定已经积累了足够的数据,只需删除jar(.class),就可以开始了