(aka coconut, juice), an automatic DevOps metrics analysis tool.
case studies: Coco cases
Online Demos:
OS: macOS, Windows, GNU/Linux
- install or download Coco components from release, and download ctags: windows
- use coco initto generate config file
- config coco.yml
- optional: use coco pluginsto 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,visuale``xec file
- download coco_plugins_xxxxwith platform
- extract coco_plugins_xxxxtopluginsdir
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
示例:
# 代码库
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 libgit2See in DEVELOPMENT.md
Bilibili: 研发效能分析工具 Coco 第一次线上讨论
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?
- AST Parser: include_parser/mod.rs
- Web Server: light_server.rs
- CLI: visual.rs,coco.rs,suggest.rs
-  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 ?
Refs: Libgit2 Documents
Download Coco to your Mac from release
Move it(Coco) to your preferred directory,such as:
mkdir ~/.coco
mv ~/Downloads/coco_macos ~/.coco/Set up an alias to make it easier to use,such as:
export 'alias coco="~/.coco/coco_macos"' >> ~/.zshrcTry to use execute it by alias coco:
coco -hIf it show no permission,you can execute the following command:
chmod -R u=rwx,g=rw,o=r ~/.coco/coco_macosThen retry:
coco -hGood luck!
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.