Coco
(aka coconut, juice), an automatic DevOps metrics analysis tool.
Case Studies: Coco cases
Online Demos:
Support OS: macOS, Windows, GNU/Linux
特性(features in Chinese):
- 可交互式架构分析
- UML 可视化
- 团队/项目健康值分析
- 框架检测与分析
- 云原生成熟度分析
- 多项目并行分析
- 分支生命周期和可视化
- 改进建议(在线)
Usage
- install or download Coco components from release
- use
coco init
to generate config file - config
coco.yml
- optional: use
coco plugins
to download plugins - run Coco
coco
, gather data from sourcevisual
, visualization of datasuggest
, generate suggestion
Coco
coco 0.4.2
USAGE:
coco [OPTIONS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-b, --branches <branches> With all branches [default: true]
--commits <commits> With all commits [default: true]
-c, --config-file <config-file> Config file .yml [default: coco.yml]
-d, --debug <debug> Debug mode [default: false]
-f, --file-history <file-history> Scan file change list from git & cloc [default: false]
-y, --git-years <git-years> Set git commits scan years, default 1, [default: 1.0]
-t, --tags <tags> With all tags [default: true]
SUBCOMMANDS:
help Prints this message or the help of the given subcommand(s)
init Create default coco.yml files
plugins Download plugins from GitHub
sample:
coco --file-history=true --git-years=3
coco.yml
配置 (config in Chinese)
示例:
# 代码库
repos:
- url: https://github.com/coco-rs/coco.fixtures
- url: https://github.com/coco-rs/coco.fixtures2
- url: .
languages: [Rust]
- url: https://github.com/datum-lang/scie
- url: https://github.com/projectfluent/fluent-rs
languages: [Rust, JavaScript] # set languages for struct analysis
plugins:
- name: swagger
- name: struct_analysis
config:
- key: ctags # set location for macOS ctags path
value: /usr/local/bin/ctags
Documents
Development
See in DEVELOPMENT.md
Online video
Bilibili: 研发效能分析工具 Coco 第一次线上讨论
Roadmap
analysis and reporter
analysis
- git analysis
- branch
- changes
- commits
- cloc analysis
- summary
- file arch
- framework analysis
- architecture analysis
- file/directory organization
reporter
- html reporter
- json output
- query api?
suggest and case study
Tech
- AST Parser:
include_parser/mod.rs
- Web Server:
light_server.rs
- CLI:
visual.rs
,coco.rs
,suggest.rs
Todo
- git analysis
- merge code from coca
- local repo support
- project calendar view https://observablehq.com/@d3/calendar-view
- change
- line change
- changed file
- commit number
- git branch analysis
- branch history
- branch visual. such as https://app.gfc.io/github/nvie/gitflow
- ahead vs behind https://github.com/BenoitZugmeyer/git-branches-overview
- git commit time analysis
- storage all commits
- working night count
- cloc analysis
- spike cloc tools Tokei
- history cloc changes
- commit cloc changes
- framework analysis.
- framework detector
- merge from scie-detector
- framework output
- tech stack generate
- cloud native
- module analysis
- base framework for directory
- gitignore support
- code flower
- include analysis
- code parser: pest
- languages support.
- base framework for directory
- team analysis
- join time & life time
- 以加入时间开始度量平均提交:上手成本分析
- 平均加入时长
- 成员加入时间点
- member growth
- count system size & learning curve
- join time & life time
- commit analysis
- commit times analysis (hours)
- rule regex support in config
- participle(分词)
- tags generate
- suggestion API
- document manage system
- suggest to ledge
- suggest to cases
- suggest to coco.server?
- online suggest ?
- link daily checking
- architecture design rules
- architecture
- tech stack version check (more than 3 years ?)
- Maven Center
- NPM Server
- Go Server
- tech stack version check (more than 3 years ?)
- tools
- tools config identify
- tools suggest (identify old tools)
- cloud-native config
- case study
- homepage: https://github.com/inherd/cases
- auto clone and auto deploy
- todo scan
- merge from coca
- multiple platform support
- macOS
- GNU/Linux
- Windows
- fix tests
- make it works
- C4 Model
- PUML for call chain
- symbol design - IsA, Use-In-The-Interface, Uses-In-The-Implementation
- PUML for call chain
- plugin
- struct analysis
- ctags
- visual
- uml
- swagger
- Jenkinsfile
- Dockerfile
- struct analysis
Visual and Reporter
- visual api
- static files server
- http server: actix_web
- static server: Rust Embed
- export assets
- cli prompt for projects
- query JSON API
- CLI JSON API
- static files server
- visual web
- spike d3.js code organization
- typescript with frontend framework
- use Deno ?
- architecture
- first demo
- code flower 1, D3.js code flower
- circle
- git
- branch history
- commits in years/month
- examples: gilot average committer in month
- changes in years/month
- graph support for velocity
- code commits by daily
PR times by daily
- story velocity
- commit message analysis
- story spend days
- advanced code flower, Polyglot Code Explorer
- source code: https://github.com/kornysietsma/polyglot-code-explorer/tree/master/src
- Weighted Voronoi diagram
- Age since last change
- Creation date
- Unique changers
- Temporal Coupling
- reporter
- framework
- cloc
- git
- architecture
DevOps pipeline
- Jenkinsfile of Coco's examples
Tech Debt Integration
- Git 2
- Code check with: https://github.com/kornysietsma/polyglot-code-scanner
- Integration Sonarqube ?
Documents
Refs: Libgit2 Documents
Thanks
License
ctags analysis based on https://github.com/dalance/ptags with MIT, see in src
ctags parser rewrite from Golang's https://github.com/ruben2020/tags2uml with Apache License.
@ 2020~2021 This code is distributed under the MIT license. See LICENSE
in this directory.