เพื่ออำนวยความสะดวกในการใช้งาน เราสามารถสร้าง Command ของ code-maat ได้ดังนี้
เนื่องจากผมกำหนดแบบไฟล์ Bin ไว้ เพื่อไม่ลดความยุ่งยากในการกำหนด Path บนระบบ
-
Copy โฟล์เดอร์ bin ไว้ที่เครื่อง ของผมจะไว้ที่
/Users/Username
-
เข้าไปที่โฟล์เดอร์ Bin
cd bin
-
เปลี่ยน Permission
chmod +x maat
chmod +x merge
-
สร้างหรือเปิดไฟล์ .zprofile หรือ .bashrc หรือ .bash_profile (ผมใช้ .zprofile)
vi .zprofile
-
กำหนด Path ใน .zprofile
export PATH="$PATH:$HOME/Bin"
-
Restart หรือ ปิด-เปิด Terminal ใหม่
เท่านี้ก็สามารถใช้งาน code-maat ได้แล้ว โดยใช้คำสั่ง maat
แทนการเรียกใช้แบบ java -jar
ไฟล์
maat -h
เป็นไฟล์ Shell Script ที่เป็นชุดคำสั่งใช้ในการเรียกใช้งาน maat และ Merge csv ที่ทำขึ้นมาเพื่อความสะดวก
bash xlog-with-merge.sh before(YYYY-MM-DD) after(YYYY-MM-DD) : xlog 2018-10-21 2018-01-21"
ตัวอย่าง
bash xlog-with-merge.sh 2023-10-21 2023-01-21
คำสั่งในการดึงข้อมูลจาก Git และนำมาสร้างเป็น Report ด้วย Code-maat
git log --numstat
git log --all --numstat --date=short --pretty=format:'--%h--%ad--%aN' --no-renames --after=YYYY-MM-DD --before=YYYY-MM-DD > logfile.log
-
git legacy
git log --pretty=format:'[%h] %aN %ad %s' --date=short --numstat --after=YYYY-MM-DD > logfile.log
-
Help
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -h
-
Analysis Options
-a, --analysis
abs-churn, age, author-churn, authors, communication, coupling, entity-churn, entity-effort, entity-ownership, fragmentation, identity, main-dev, main-dev-by-revs, messages, refactoring-main-dev, revisions, soc, summary
-
example
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a authors
-
-
Run Code Maat
-
Summary Data
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a summary
-
Analyze Change Frequencies
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a revisions
-
Calculate code age
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a age
-
Mining logical coupling
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a coupling
-
Code churn measures
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a abs-churn
-
churn by author
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a author-churn
-
churn by entity
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a entity-churn
-
entity ownership
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a entity-ownership
-
entity effort
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a entity-effort
-
main developer
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a main-dev
-
-
Analyze
revisions
fromlogfile.log
java -jar code-maat-1.1-SNAPSHOT-standalone.jar -l logfile.log -c git2 -a revisions > revisions.csv
-
Analyze line of code with
cloc
-
nodejs
cloc ./ --by-file --csv --quiet --exclude-dir=node_modules --report-file=./lines.csv
-
.NetCore
cloc ./ --by-file --csv --quiet --exclude-dir=bin,obj --report-file=./lines.csv
-
-
Analyze
complexity
andfrequency
withmerge_comp_freqs.py
python3 merge_comp_freqs.py revisions.csv lines.csv > comp-freqs.csv
Ref: code maat