metrics.py
This commit is contained in:
parent
ad6e381830
commit
a89fd3416c
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@
|
||||
/Cargo.lock
|
||||
**/*.rs.bk
|
||||
metrics.ansi
|
||||
metrics.txt
|
||||
|
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -10,5 +10,6 @@
|
||||
99,
|
||||
100
|
||||
]
|
||||
}
|
||||
},
|
||||
"python.analysis.typeCheckingMode": "basic"
|
||||
}
|
37
metrics.py
Normal file
37
metrics.py
Normal file
@ -0,0 +1,37 @@
|
||||
import json
|
||||
from subprocess import check_output
|
||||
|
||||
all_entries = []
|
||||
|
||||
|
||||
def save_entry(entry: dict, prefix=""):
|
||||
name = entry["name"] = prefix + entry["name"]
|
||||
spaces = entry.pop("spaces")
|
||||
all_entries.append(entry)
|
||||
for space in spaces:
|
||||
save_entry(space, f"{name}::")
|
||||
|
||||
|
||||
def main():
|
||||
lines = check_output(
|
||||
["rust-code-analysis-cli", "-m", "-p", "src", "-O", "json"], text=True
|
||||
).splitlines()
|
||||
for line in lines:
|
||||
entry = json.loads(line)
|
||||
assert entry["kind"] == "unit"
|
||||
assert entry["start_line"] == 1
|
||||
assert entry["end_line"] >= entry["start_line"]
|
||||
save_entry(entry)
|
||||
all_entries.sort(
|
||||
key=lambda entry: (
|
||||
entry["metrics"]["halstead"]["bugs"] or 0,
|
||||
entry["metrics"]["halstead"]["volume"],
|
||||
),
|
||||
reverse=True,
|
||||
)
|
||||
for entry in all_entries:
|
||||
# print(*entry["metrics"])
|
||||
print(entry["name"], entry["metrics"]["halstead"])
|
||||
|
||||
|
||||
main()
|
Loading…
Reference in New Issue
Block a user