通过analyzer分析dart代码

比如有个需求:

通过分析注解,来生成一段dart代码。

 

dart上如果要自动生成代码,那么就需要用到代码生成器,code generator,这和Android里面apt类似。一般我们会引用source_gen声明一些generator,然后放在build.yaml里面,调用build_runner来生成代码。

如果不想使用框架,而是自己手写这个过程呢?

1.从dart文件读入代码

2.分析代码,读出里面的annotation对应的value值。

3.根据value值,自己再生成代码字符串content

4.把代码字符串写到一个dart文件中

如果是简单的第二个过程,可以想到一种,通过正则匹配来读出对应的annotation里面的值。然后用来生成代码字符串content。如果类很复杂,那么自己来手动分析就会比较繁琐。

dart中有一个工具analyzer,来分析代码。它会把一段代码内容导入进来,进行分析,然后生成一个ast抽象语法树。

我们现在利用它写一个demo读取出dart里面的注解内容。

我们先定义好一些注解类:

class SFLegoClass{
  final String host;
  final String source;

  const SFLegoClass(this.host,this.source);
}

class SFLegoField{
  final String fieldAlias;
  const SFLegoField(this.fieldAlias);
}

class SFLegoMethod{
  final String method;
  const SFLegoMethod(this.m
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值