Cognitive Complexity score analyzer for MoonBit source code
Dependencies
moon run cmd/cog_complex -- path/to/moonbit/projectmoon install ./cmd/cog_complex
cog_complex path/to/moonbit/projectmoon install pocket7878/cog_complex/cmd/cog_complex
cog_complex path/to/moonbit/projectmoon run cmd/cog_complex -- .moon run cmd/cog_complex -- src
moon run cmd/cog_complex -- src/parser
moon run cmd/cog_complex -- src/parser/token.mbtsrc/main/main.mbt:main 3<path>:<function-or-method-name> <complexity-score>src/counter.mbt:Counter::sign 1moon run cmd/cog_complex -- . | awk '$NF > 15 { print; bad = 1 } END { exit bad }'///|
fn words(n : Int) -> String {
if n == 1 { // +1
"one"
} else if n == 2 { // +1
"two"
} else {
"many"
}
} // Complexity score = 2///|
fn words(n : Int) -> String {
match n { // +1
1 => "one"
2 => "two"
_ => "many"
}
} // Complexity score = 1///|
fn first_positive(rows : Array[Array[Int]]) -> Int {
for row in rows { // +1
for x in row { // +2 (nesting = 1)
if x > 0 { // +3 (nesting = 2)
return x
}
}
}
0
} // Complexity score = 6///|
fn scan(xs : Array[Int]) -> Int {
outer~: for i = 0; i < xs.length(); i = i + 1 { // +1
if xs[i] < 0 { // +2
break outer~ // +1
}
}
0
} // Complexity score = 4moon test
moon coverage analyze
moon coverage report -f summary
moon run cmd/cog_complex -- .
moon info
moon fmtmoon test
moon coverage analyze
moon coverage report -f summary
moon run cmd/cog_complex -- .
moon info
moon fmt
moon package --list
moon install --dry-run ./cmd/cog_complexpub(all) struct FunctionScore {
name : String
score : Int
}Cognitive Complexity score analyzer for MoonBit source code
Dependencies