作为一名高级软件工程师,我经常会遇到很多其他/她的开发者重复的问题。过去,我只靠写博客。现在,我有四种解决方法:写博客。我的博客phodal.com上有850多种博客工具。创建开源工具来解决重复性问题,例如:ADR、Lemonj、Coca、Clij开源电子书。系统总结与某一领域相关的实践和模式,如:《Serverless 应用架构》知识平台。结合工具和电子书,比如DevOpsKnowledgePlatform:Ledge即便如此,它仍然没有解决一个问题:我需要人来分析项目并抛出这些链接。所以,过去我一直在想:我能不能做一个工具来代替我自己?当然,我真正的意思不是:取代我自己,而是取代我所做的重复性活动。(PS:写完了再写一个自动写PPT的工具就完美了。)于是,我开始写一个新的工具,自动代码分析和建议的工具。Coco:自动化分析和建议工具在Coco的README(https://github.com/phodal/coco)中,可以看到目前规划的1.0的相关Todo列表。从某种意义上说,这是一个AI工具(专家系统),它依赖于高级工程师的大量经验。它的难点主要在于:工具的MVP版本。验证工具在技术上是可行的(PS:从我的角度来看,这不是问题)持续的经验输入。继续完善整个工具的建议系统和结构。上下游生态完善。获取上下游工具(PS:比如DevOps,cloud-native相关)相关的信息和数据,避免功能膨胀。必要时使用插件扩展功能。Coco和Coca的关系Coca是作者(@phodal)为系统重构、系统迁移和系统分析而写的一把瑞士军刀。它可以分析代码中的不良测试气味、模块化分析、行数统计、调用和依赖关系分析、Git分析和自动重构。Coco这个名字的来源是椰子鸡,就像Coca项目(https://github.com/phodal/coca)的来源是可口可乐,只是维度从喝到吃。Coco是Coca的姊妹工具,是对Coca工具的补充。Coco:自动化分析和推荐工具Coco的主要功能有:分析。项目综合分析,如Git历史、模块化分析、框架使用等报告。以可视化和文档的形式输出项目概览信息(结合D3可视化)建议。针对项目中存在的问题,建议自动化的成熟度等级。(TBC,待定)在里程碑方面,我们有很多功能要做。Ledge,一个结合Coca和DevOps的知识平台,在开源社区洗礼了一年多,受到越来越多开发者的喜爱。同时,在过去的一年多时间里,我也在不断的将自己的经验输入到项目中。同时,我们会先创建一个组织:Inherd,作为这一系列工具的核心团队。Coco技术栈作为一个CLI工具,我应该选择Golang作为主要技术栈。然而,在与Ledge的开发人员频繁讨论后,决定使用Rust(尽管他们中的大多数人都没有经验)作为主要语言。同时,作为一个已经使用Rust语言一年的开发者,我觉得这不是什么太大的问题。同时,这个工具未来也会运行在浏览器上,而且Rust对WebAssembly的支持比几大主流语言更加友好。除了Rust,我们还需要可视化相关的报表等,为此我们还需要开发前端相关的技术栈,比如D3.js。当然,结合WebAssembly+D3.js+其他框架也是一个不错的选择。Cocoprogress写一个工具,最难的就是开始,然后加功能,重构,谁都能做。目前主要进展:使用libgit2实现Git相关分析。集成Tokei,实现CLOC相关的行数统计。集成Scie的框架检测功能,可视化技术栈。以下主要模块暂未启动:模块化分析及可视化报表标签生成(AI、分词)改进建议二维码关注。转载本文请联系phodal公众号。
