4

写个取代自己的工具:Coco —— 自动化分析与建议

 3 years ago
source link: http://www.phodal.com/blog/coco-analysis/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作为一个资深的软件工程师,我经常遇到其他/她开发人员大量的重复问题。过去只靠写博客,现在,我有了四种方式来解决:

  • 博客。我的博客 phodal.com 上有 850+ 的博客
  • 工具。创造开源工具解决重复性问题,如:ADR、Lemonj、Coca、Clij
  • 开源电子书。系统性的归纳某一个领域相关实践和模式,如:《Serverless 应用架构》
  • 知识平台。结合工具和电子书,如 DevOps 知识平台:Ledge

即使如此,依旧没有解决一个问题:我需要人力来分析项目、再抛出这些链接。于是,过去我一直就在想: 能否做一个工具来取代自己? 当然了,我的真实意思不是:取代我自己,而是取代我做的那些重复性活动。(PS:等写完之后,再写一个自动化写 PPT 的工具,就完美了。)

所以,我开始编写一个新的工具,一个关于对代码进行自动化分析与建议的工具。

Coco:自动化分析与建议工具

在 Coco 的 README ( https://github.com/phodal/coco )里,可以看到现在规划的 1.0 的相关的 Todo 列表。从某种意义上来说,这是一个 AI 工具(专家系统),它依赖于资深工程师的大量的经验。它的难度主要在于:

  • 工具的 MVP 版本。验证工具在技术上是可行的(PS:从我的角度来看,它并不存在问题)
  • 持续性的经验输入。持续完善整个工具的建议体系和架构
  • 上下游生态完善。获取上下游工具相关的资料和数据(PS:如 DevOps、云原生相关)
  • 避免功能膨胀。必要的情况下,通过插件的方式来扩展功能

Coco 与 Coca 的关系

Coca 是笔者(@phodal)写的一个用于系统重构、系统迁移和系统分析的瑞士军刀。它可以分析代码中的测试坏味道、模块化分析、行数统计、分析调用与依赖、Git 分析以及自动化重构等。

Coco 这个名字的来源是 椰子鸡 ,正如 Coca 项目( https://github.com/phodal/coca )的来源是 Coca Cola,只是维度上由喝的变成吃的而已。Coco 是 Coca 的姊妹工具,与 Coca 工具是相互补充。

Coco:自动化分析与建议工具

Coco 要实现的主要功能是:

  • 分析。对项目进行全面化的分析,如 Git 历史、模块化分析、框架使用等
  • 报告。以可视化和文档的形式输出项目的总览信息(结合 D3 可视化的形式)
  • 建议。针对于项目中的问题,进行自动化的建议
  • 成熟度。(TBC,待定)

从里程碑来说,我们所要做的功能特别多。而结合 Coca 和 DevOps 知识平台 Ledge 在开源社区经受了一年多的洗礼,它们受到了越来越多的开发者的喜爱。与此同时,在这一年多的时间里,我也将自己的经验不断也输入到了项目中。

与此同时,我们将先创建一个组织: Inherd ,作为这一系列工具的核心团队。

Coco 技术栈

作为一个 CLI 工具,我本该选取 Golang 作为主要技术栈的。但是,经常与 Ledge 的开发者们讨论一番后,大家决定使用 Rust(虽然大部分人都没有经验)作为主要语言。与此同时,作为一个已经使用了一年的 Rust 语言的开发者,我觉得这并不是太大的难题。与此同时,这个工具未来也将在浏览器上运行,Rust 的 Web Assembly 支持比几大主流语言友好。

除了 Rust 之外,我们还需要可视化相关的报告等,为此我们还需要前端相关技术栈的开发,如 D3.js。当然了,能结合 Web Assembly + D3.js + 其它框架也是一个不错选项。

Coco 进度

对于写一个工具来说,最难的是开个头,随后就是补充功能和重构了,谁都能做。

当前主要进展:

libgit2

以下主要模块还未开始:

  • 模块化分析
  • 可视化报告
  • 标签生成(AI,分词)
  • 改进建议
  • 工具建议

还有其它诸如案例学习等等,详细见项目的 README。

其它

欢迎加入我们:https://github.com/phodal/coco


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK