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

rdi*_*z82 7 java android kotlin gradle-plugin

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

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

有没有办法扫描我的ArrayList中的每个File对象并获取带注释的所有方法@test

Dav*_*idW 1

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

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

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