coco
coco copied to clipboard
An effective DevOps analysis and auto-suggest tool。Coco 是一个研发效能分析工具,如团队发展现状(根据架构复杂度及行数变更)、团队演进、历史分析等。生成可视化报告及对应的改进建议。
Coco
(aka coconut, juice), an automatic DevOps metrics analysis tool.
case studies: Coco cases
Online Demos:
OS: macOS, Windows, GNU/Linux
Usage
- install or download Coco components from release, and download ctags: windows
- use
coco init
to generate config file - config
coco.yml
- optional: use
coco plugins
to download plugins - run Coco
-
coco
, gather data from source -
visual
, visualization of data -
suggest
, generate suggestion
-
- download plugins (optional)
- coco_container,container analysis
- coco_pipeline,pipeline analysis
- coco_struct,model analysis by ctags
- coco_swagger,Swagger API Analysis
visual URL:
- all: http://127.0.0.1:8000/
- explorer: http://127.0.0.1:8000/explorer.html
Offline usage:
- download
coco
,visual
e``xec file - download
coco_plugins_xxxx
with platform - extract
coco_plugins_xxxx
toplugins
dir
Coco Usage
coco 0.5.3
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
config:
- key: ctags # set location for macOS ctags path
value: /usr/local/bin/ctags
git:
local: true # true will use `git clone`, false will use libgit2
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
- [x] git analysis
- [x] merge code from coca
- [x] local repo support
- [x] project calendar view https://observablehq.com/@d3/calendar-view
- [x] change
- [x] line change
- [x] changed file
- [x] commit number
- [x] git branch analysis
- [x] branch history
- [x] branch visual. such as https://app.gfc.io/github/nvie/gitflow
- ahead vs behind https://github.com/BenoitZugmeyer/git-branches-overview
- [x] git commit time analysis
- [x] storage all commits
- [x] working night count
- [x] cloc analysis
- [x] spike cloc tools Tokei
- [x] history cloc changes
- [x] commit cloc changes
- [ ] framework analysis.
- framework detector
- [x] merge from scie-detector
- [x] framework output
- [ ] tech stack generate
- [ ] cloud native
- [ ] module analysis
- [x] base framework for directory
- [x] gitignore support
- [x] code flower
- [ ] include analysis
- [x] code parser: pest
- [ ] languages support.
- [x] base framework for directory
- [x] team analysis
- [x] join time & life time
- 以加入时间开始度量平均提交:上手成本分析
- 平均加入时长
- 成员加入时间点
- [x] member growth
- [x] count system size & learning curve
- [x] join time & life time
- [ ] commit analysis
- [x] commit times analysis (hours)
- [x] rule regex support in config
- [ ] participle(分词)
- [x] 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
- [x] homepage: https://github.com/inherd/cases
- [ ] auto clone and auto deploy
- [ ] todo scan
- [ ] merge from coca
- [x] multiple platform support
- [x] macOS
- [x] GNU/Linux
- [x] Windows
- [x] fix tests
- [x] 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
- [x] ctags
- [ ] visual
- [x] uml
- [x] swagger
- [x] Jenkinsfile
- [ ] ~~Dockerfile~~
- [ ] struct analysis
Visual and Reporter
- visual api
- [x] static files server
- [x] http server: actix_web
- [x] static server: Rust Embed
- [x] export assets
- [x] cli prompt for projects
- [ ] query JSON API
- [ ] CLI JSON API
- [x] static files server
- visual web
- [x] spike d3.js code organization
- [ ] typescript with frontend framework
- [ ] use Deno ?
- [x] architecture
- [x] first demo
- [x] code flower 1, D3.js code flower
- [x] circle
- [ ] git
- [x] branch history
- [x] commits in years/month
- examples: gilot average committer in month
- [ ] changes in years/month
- [ ] graph support for velocity
- [x] 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
- [x] 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
FAQ
How to install in macOS?
Step1
Download Coco to your Mac from release
Step2
Move it(Coco) to your preferred directory,such as:
mkdir ~/.coco
mv ~/Downloads/coco_macos ~/.coco/
Step3
Set up an alias to make it easier to use,such as:
export 'alias coco="~/.coco/coco_macos"' >> ~/.zshrc
Step4
Try to use execute it by alias coco
:
coco -h
If it show no permission,you can execute the following command:
chmod -R u=rwx,g=rw,o=r ~/.coco/coco_macos
Then retry:
coco -h
Good luck!
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.