in bugbug/repository.py [0:0]
def get_summary_metrics(obj, metrics_space):
if metrics_space["kind"] in {"unit", "function"} and metrics_space["name"] == "":
raise AnalysisException("Analysis error")
if metrics_space["kind"] == "function":
metrics = metrics_space["metrics"]
obj["cyclomatic_max"] = max(obj["cyclomatic_max"], metrics["cyclomatic"]["sum"])
obj["halstead_n2_max"] = max(obj["halstead_n2_max"], metrics["halstead"]["n2"])
obj["halstead_N2_max"] = max(obj["halstead_N2_max"], metrics["halstead"]["N2"])
obj["halstead_n1_max"] = max(obj["halstead_n1_max"], metrics["halstead"]["n1"])
obj["halstead_N1_max"] = max(obj["halstead_N1_max"], metrics["halstead"]["N1"])
if metrics["halstead"]["length"] is not None:
obj["halstead_length_max"] = max(
obj["halstead_length_max"], metrics["halstead"]["length"]
)
if metrics["halstead"]["estimated_program_length"] is not None:
obj["halstead_estimated_program_length_max"] = max(
obj["halstead_estimated_program_length_max"],
metrics["halstead"]["estimated_program_length"],
)
if metrics["halstead"]["purity_ratio"] is not None:
obj["halstead_purity_ratio_max"] = max(
obj["halstead_purity_ratio_max"], metrics["halstead"]["purity_ratio"]
)
if metrics["halstead"]["vocabulary"] is not None:
obj["halstead_vocabulary_max"] = max(
obj["halstead_vocabulary_max"], metrics["halstead"]["vocabulary"]
)
if metrics["halstead"]["volume"] is not None:
obj["halstead_volume_max"] = max(
obj["halstead_volume_max"], metrics["halstead"]["volume"]
)
if metrics["halstead"]["difficulty"] is not None:
obj["halstead_difficulty_max"] = max(
obj["halstead_difficulty_max"], metrics["halstead"]["difficulty"]
)
if metrics["halstead"]["level"] is not None:
obj["halstead_level_max"] = max(
obj["halstead_level_max"], metrics["halstead"]["level"]
)
if metrics["halstead"]["effort"] is not None:
obj["halstead_effort_max"] = max(
obj["halstead_effort_max"], metrics["halstead"]["effort"]
)
if metrics["halstead"]["time"] is not None:
obj["halstead_time_max"] = max(
obj["halstead_time_max"], metrics["halstead"]["time"]
)
if metrics["halstead"]["bugs"] is not None:
obj["halstead_bugs_max"] = max(
obj["halstead_bugs_max"], metrics["halstead"]["bugs"]
)
obj["functions_max"] = max(obj["functions_max"], metrics["nom"]["functions"])
obj["closures_max"] = max(obj["closures_max"], metrics["nom"]["closures"])
obj["sloc_max"] = max(obj["sloc_max"], metrics["loc"]["sloc"])
obj["ploc_max"] = max(obj["ploc_max"], metrics["loc"]["ploc"])
obj["lloc_max"] = max(obj["lloc_max"], metrics["loc"]["lloc"])
obj["cloc_max"] = max(obj["cloc_max"], metrics["loc"]["cloc"])
obj["blank_max"] = max(obj["blank_max"], metrics["loc"]["blank"])
obj["nargs_max"] = max(obj["nargs_max"], metrics["nargs"]["sum"])
obj["nexits_max"] = max(obj["nexits_max"], metrics["nexits"]["sum"])
obj["cognitive_max"] = max(obj["cognitive_max"], metrics["cognitive"]["sum"])
# TODO: Try removing the None checks after https://github.com/mozilla/rust-code-analysis/issues/528 is fixed.
if metrics["mi"]["mi_original"] is not None:
obj["mi_original_max"] = max(
obj["mi_original_max"], metrics["mi"]["mi_original"]
)
if metrics["mi"]["mi_sei"] is not None:
obj["mi_sei_max"] = max(obj["mi_sei_max"], metrics["mi"]["mi_sei"])
if metrics["mi"]["mi_visual_studio"] is not None:
obj["mi_visual_studio_max"] = max(
obj["mi_visual_studio_max"], metrics["mi"]["mi_visual_studio"]
)
obj["cyclomatic_min"] = min(obj["cyclomatic_min"], metrics["cyclomatic"]["sum"])
obj["halstead_n2_min"] = min(obj["halstead_n2_min"], metrics["halstead"]["n2"])
obj["halstead_N2_min"] = min(obj["halstead_N2_min"], metrics["halstead"]["N2"])
obj["halstead_n1_min"] = min(obj["halstead_n1_min"], metrics["halstead"]["n1"])
obj["halstead_N1_min"] = min(obj["halstead_N1_min"], metrics["halstead"]["N1"])
if metrics["halstead"]["length"] is not None:
obj["halstead_length_min"] = min(
obj["halstead_length_min"], metrics["halstead"]["length"]
)
if metrics["halstead"]["estimated_program_length"] is not None:
obj["halstead_estimated_program_length_min"] = min(
obj["halstead_estimated_program_length_min"],
metrics["halstead"]["estimated_program_length"],
)
if metrics["halstead"]["purity_ratio"] is not None:
obj["halstead_purity_ratio_min"] = min(
obj["halstead_purity_ratio_min"], metrics["halstead"]["purity_ratio"]
)
if metrics["halstead"]["vocabulary"] is not None:
obj["halstead_vocabulary_min"] = min(
obj["halstead_vocabulary_min"], metrics["halstead"]["vocabulary"]
)
if metrics["halstead"]["volume"] is not None:
obj["halstead_volume_min"] = min(
obj["halstead_volume_min"], metrics["halstead"]["volume"]
)
if metrics["halstead"]["difficulty"] is not None:
obj["halstead_difficulty_min"] = min(
obj["halstead_difficulty_min"], metrics["halstead"]["difficulty"]
)
if metrics["halstead"]["level"] is not None:
obj["halstead_level_min"] = min(
obj["halstead_level_min"], metrics["halstead"]["level"]
)
if metrics["halstead"]["effort"] is not None:
obj["halstead_effort_min"] = min(
obj["halstead_effort_min"], metrics["halstead"]["effort"]
)
if metrics["halstead"]["time"] is not None:
obj["halstead_time_min"] = min(
obj["halstead_time_min"], metrics["halstead"]["time"]
)
if metrics["halstead"]["bugs"] is not None:
obj["halstead_bugs_min"] = min(
obj["halstead_bugs_min"], metrics["halstead"]["bugs"]
)
obj["functions_min"] = min(obj["functions_min"], metrics["nom"]["functions"])
obj["closures_min"] = min(obj["closures_min"], metrics["nom"]["closures"])
obj["sloc_min"] = min(obj["sloc_min"], metrics["loc"]["sloc"])
obj["ploc_min"] = min(obj["ploc_min"], metrics["loc"]["ploc"])
obj["lloc_min"] = min(obj["lloc_min"], metrics["loc"]["lloc"])
obj["cloc_min"] = min(obj["cloc_min"], metrics["loc"]["cloc"])
obj["blank_min"] = min(obj["blank_min"], metrics["loc"]["blank"])
obj["nargs_min"] = min(obj["nargs_min"], metrics["nargs"]["sum"])
obj["nexits_min"] = min(obj["nexits_min"], metrics["nexits"]["sum"])
obj["cognitive_min"] = min(obj["cognitive_min"], metrics["cognitive"]["sum"])
# TODO: Try removing the None checks after https://github.com/mozilla/rust-code-analysis/issues/528 is fixed.
if metrics["mi"]["mi_original"] is not None:
obj["mi_original_min"] = min(
obj["mi_original_min"], metrics["mi"]["mi_original"]
)
if metrics["mi"]["mi_sei"] is not None:
obj["mi_sei_min"] = min(obj["mi_sei_min"], metrics["mi"]["mi_sei"])
if metrics["mi"]["mi_visual_studio"] is not None:
obj["mi_visual_studio_min"] = min(
obj["mi_visual_studio_min"], metrics["mi"]["mi_visual_studio"]
)
for space in metrics_space["spaces"]:
get_summary_metrics(obj, space)
return obj