gpt4 book ai didi

java - 从 gradle 插件中获取带注释的方法

转载 作者:IT老高 更新时间:2023-10-28 13:43:03 27 4
gpt4 key购买 nike

我正在为 kotlin 中的 android 项目开发一个 gradle 插件,我需要扫描项目源文件以获取所有测试的名称。我已经实现了一个目录扫描器,我得到了一个 Arraylist<File>与所有测试类。

我试图对这些文件应用反射,但我总是得到一个找不到类的异常。我想 gradle 插件试图在项目的同一个 gradle 插件中找到类,而不是在使用该插件的 Android 项目中。

有什么方法可以扫描我的 ArrayList 中的每个 File 对象并获取所有带有注释 @test 的方法?

最佳答案

由于您拥有的是项目中所有 文件的列表,因此您需要遍历它们,依次打开每个文件并读取它们(作为文本)以找到任何方法@Test 注释之后的名称。

取决于您的编码标准有多强,以及它们的遵循程度如何,这可能几乎是微不足道的或相当困难的。在我们的代码库中,您可以简单地查找与 ^\s+@Test 匹配的行,然后将下一行与 ^\s+\w+\s+\w+\s+(\w+)\( 来获取方法名。(或者标记它,如果你愿意的话。)这几乎是你最简单的情况;如果你的代码库使用 @Ignore 来禁用测试,或者有人包装了一个在多行注释 block (/* ... */) 中进行测试,或者如果可能存在奇怪的格式、缺少访问修饰符等,那么您的工作将会更加困难。

哦,我不会费心在这里搜索如何忽略代码中的注释 - 大多数第一次点击都做错了。错误包括假设多行注释从行首开始(行上没有与多行注释开始匹配的前导内容)并在行尾结束;如果一行包含多行注释开头,则需要检查单行注释(可能会注释掉多行注释开头,具体取决于顺序),并且其他问题。

关于java - 从 gradle 插件中获取带注释的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50550742/

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