技术经验谈 技术经验谈
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hss01248

一号线程序员
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 编译和自动化

    • gradle基础
    • gradle-task
    • appbundle打包的自动化
    • cmake vs gradle
    • cmake入门
    • gradle依赖管理
    • gradle加速之拉取依赖的加速
    • gradle远程脚本
    • maven
    • 多module时自动发布所有lib
    • 将react native打包成一个aar
  • 异常上报和监测

  • SDK封装方法论
  • 结构化文档一键转代码的实践-埋点-翻译-java api注释
    • 神策埋点上报的自测/校对
  • 防御式编程例子1-颜色解析工具的处理
  • 工程方法
hss01248
2022-05-17
目录

结构化文档一键转代码的实践-埋点-翻译-java api注释

# 结构化文档一键转代码的实践-埋点-翻译-java api注释

开发过程中,产品/运营给过来的一些结构化文档,最终要转化为代码,比如埋点,翻译,都是重复劳动,可以解析并生成代码,然后复制粘贴

# 翻译文档

表格->解析为list->生成对应平台的翻译配置

比如Android的xml

后台的properties文件

都是可以一键生成.

一般以模块名-英文前20位为key

# 埋点

以神策为例

翻译表格->

解析为list->

每行生成代码,放到表格最后一列->

复制粘贴到工程中

# 神策埋点上报的自测/校对

debug开启时,神策上报成功后会打印日志: SA.AnalyticsMessages: valid message: [{xxxx}]

但是这个日志是全量的数据,很多带$的,以及值为空的字段,我们实际的埋点文档其实只关心少数几个,

那么可以利用flipper的数据库界面来展示,从此不用再看日志

利用aop来拿到上报成功的数据:

切入点的选择:

  • 代理/替换网络请求: 神策底层为urlconnection,可以通过okttp-urlconnection库替换成okhttp,也可以使用aop切入

    com.sensorsdata.analytics.android.sdk.AnalyticsMessages.sendHttpRequest()方法,将其实现替换为okhttp实现

  • 找到打印 SA.AnalyticsMessages: valid message: 的地方,为com.sensorsdata.analytics.android.sdk.SALog.i(java.lang.String, java.lang.String), 切入,拿到valid message后面的字符串,然后解析

显然后者更加便捷.

使用aspectjx插件, 切面代码为:

     @Around("execution(* com.sensorsdata.analytics.android.sdk.SALog.i(java.lang.String, java.lang.String))")
    public Object saLog(ProceedingJoinPoint joinPoint) throws Throwable{
      ...
    }
1
2
3
4

解析字符串,匹配,入库,按发生时间排序

image-20220517170723475

# 通过java代码和文档注释来生成代码

先例: swagger等,通过注解来生成代码

java代码本身也是一种结构化数据,编译时解析为语法树

遍历树,就能搞事情

https://github.com/skyNet2017/javadoc-extractor/blob/master/src/main/java/me/tomassetti/javadocextractor/AllJavadocExtractor.java

曾经使用此工具解析jsbridge的java接口,生成js的测试代码

编辑 (opens new window)
上次更新: 2022/08/25, 20:20:31
SDK封装方法论
防御式编程例子1-颜色解析工具的处理

← SDK封装方法论 防御式编程例子1-颜色解析工具的处理→

最近更新
01
截图后的自动压缩工具
12-27
02
图片视频文件根据exif批量重命名
12-27
03
chatgpt图片识别描述功能
02-20
更多文章>
Theme by Vdoing | Copyright © 2020-2025 | 粤ICP备20041795号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式