metrics.py
This commit is contained in:
parent
ad6e381830
commit
a89fd3416c
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@
|
|||||||
/Cargo.lock
|
/Cargo.lock
|
||||||
**/*.rs.bk
|
**/*.rs.bk
|
||||||
metrics.ansi
|
metrics.ansi
|
||||||
|
metrics.txt
|
||||||
|
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -10,5 +10,6 @@
|
|||||||
99,
|
99,
|
||||||
100
|
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