0

我的任务是开发一个工具来扫描大量 Java 项目(约 7000 个.java文件)以使用已弃用的方法/属性/API。已指定该工具一次扫描单个文件,执行一些分析,并输出有问题的文件列表,以及不推荐使用的代码出现的行号。我一直在使用 Eclipse JDT Java 解析器来实现这一点,但是我似乎无法弄清楚这一点。

因为每个文件一次扫描一个,编译器不知道哪些方法被弃用,哪些不是,所以我不能只调用某个isDeprecated()方法就这样。

我编制了要在代码中查找的所有已弃用方法的列表,并针对代码库中的每个方法调用(有很多)进行检查,但这是一个丑陋的解决方案,并且产生了令人无法接受的大量错误由于解析器的限制或我对解析器知识的限制,积极的一面。

我是否能够构建每个单独的项目并将编译器警告输出到某个.txt文件或其他东西?这是我第一次处理这种规模的项目,所以我不太确定这样的事情是如何运作的。这并不完全符合规范,我想这会相当耗时,但如果这就是它所需要的,那么这就是它所需要的。

4

3 回答 3

1

Eclipse 已经为您做到了。您只需要启用编译器警告 Java development user guide > Reference > Preferences > Java > Compiler > Deprecated API

如果您不知道,Eclipse 编译器也可以在 Eclipse IDE 之外使用,说明可以在Eclipse 帮助中找到。

于 2013-01-24T03:35:50.160 回答
0

有趣的问题!您说您编译了要在代码中查找的所有已弃用方法的列表,并针对代码库中的每个方法调用进行检查。

如果您使用 JDT,我认为这是一个很好的方法。可以改进的是在解析目标库/包时获取不推荐使用的方法及其相应的类和包。例如,如果你解析 SDK,你会得到所有不推荐使用的方法及其对应的类和包。使用这些限定的方法名称,您可以通过匹配方法、类和包的名称来搜索大量 Java 项目。这应该会大大减少误报。

于 2013-03-15T13:29:25.410 回答
0

非常有趣的是,您尝试解决的问题是我在工作中遇到的确切问题(以及与此相关的更多问题)……我想我有一个对您有用的好解决方案。

第 1 步:使用爬虫之类的程序构建文件,此爬虫的目的是创建一个文件,例如 csv 文件(在工作场所很常见),其中包含 api 不推荐使用的所有功能,(方法、字段,接口,类,构造函数等)。构建此文件不适合初学者,但如果您有一些经验,可以通过 3-4 小时的工作完成。

第 2 步:在您从第 1 步获得文件后,对于您需要检查扫描的每个 java 文件,您需要做的是将其与第 1 步中的文件进行比较,如果您的第 1 步中的数据集已更新并且编程良好,那么你不会错过任何东西...

第 3 步:输出列表 - 我将把它留给你作为练习。玩得开心 !

直觉:使用简单的 html 解析器(例如 jsoup 或 json)使用 Java 或您喜欢的任何语言编写数据集,然后编写一个 bash 脚本来比较数据集和您需要扫描的 .java 文件。在脚本中 - 为每个使用已弃用 api 的 .java 创建一个 .txt 文件,其中包含有关此用途的所需信息。祝你好运。

于 2015-03-09T09:19:33.000 回答