Skip to content

Commit

Permalink
Merge pull request #27 from fga-eps-mds/develop
Browse files Browse the repository at this point in the history
Atualiza main com a branch de desenvolvimento
  • Loading branch information
Rhuancpq authored May 6, 2022
2 parents dcb9b3d + b702f24 commit 5794e68
Show file tree
Hide file tree
Showing 8 changed files with 2,248 additions and 289 deletions.
35 changes: 34 additions & 1 deletion src/core/interpretation_functions.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from .exceptions import InvalidMetricValue, InvalidInterpretationFunctionArguments
import pandas as pd
import numpy as np
import math


def check_arguments(data_frame):
Expand All @@ -23,6 +24,19 @@ def check_number_of_files(number_of_files):
raise InvalidMetricValue("The number of files is lesser or equal than 0")


def check_metric_value(metric_value, metric):
try:
if metric_value is None or math.isnan(float(metric_value)):
raise InvalidMetricValue(f'"{metric}" has an invalid metric value')
except (ValueError, TypeError):
raise InvalidMetricValue(f'"{metric}" has an invalid metric value')


def check_metric_values(metric_values, metric):
for value in metric_values:
check_metric_value(value, metric)


def interpolate_series(series, x, y):
"""
Interpolates a series using the given x and y values.
Expand Down Expand Up @@ -52,7 +66,9 @@ def get_files_data_frame(data_frame):
This function returns a data frame with files data.
"""

return data_frame[data_frame["qualifier"] == "FIL"]
return data_frame[
(data_frame["qualifier"] == "FIL") & (data_frame["ncloc"].astype(float) > 0)
]


def get_test_root_dir(data_frame):
Expand Down Expand Up @@ -83,6 +99,10 @@ def non_complex_files_density(data_frame):

check_number_of_files(number_of_files)

check_metric_values(files_complexity, "complexity")

check_metric_values(files_functions, "functions")

if files_complexity.sum() <= 0:
raise InvalidMetricValue(
"The cyclomatic complexity of all files is lesser or equal than 0"
Expand Down Expand Up @@ -128,6 +148,8 @@ def commented_files_density(data_frame):

check_number_of_files(number_of_files)

check_metric_values(files_comment_lines_density, "comment_lines_density")

if files_comment_lines_density.sum() < 0:
raise InvalidMetricValue(
"The number of files comment lines density is lesser than 0"
Expand Down Expand Up @@ -173,6 +195,8 @@ def absence_of_duplications(data_frame):

check_number_of_files(number_of_files)

check_metric_values(files_duplicated_lines_density, "duplicated_lines_density")

if files_duplicated_lines_density.sum() < 0:
raise InvalidMetricValue(
"The number of files duplicated lines density is lesser than 0"
Expand Down Expand Up @@ -213,6 +237,8 @@ def test_coverage(data_frame):

check_number_of_files(number_of_files)

check_metric_values(test_coverage, "coverage")

x, y = create_coordinate_pair(
MINIMUM_COVERAGE_THRESHOLD / 100,
MAXIMUM_COVERAGE_THRESHOLD / 100,
Expand Down Expand Up @@ -242,6 +268,8 @@ def fast_test_builds(data_frame):

root_test = get_test_root_dir(data_frame)

check_metric_value(root_test["test_execution_time"], "test_execution_time")

# test_execution_time = m9 metric
test_execution_time = float(root_test["test_execution_time"])

Expand All @@ -264,6 +292,11 @@ def passed_tests(data_frame):
used to assess the testing status subcharacteristic.
"""
root_test = get_test_root_dir(data_frame)

check_metric_value(root_test["tests"], "tests")
check_metric_value(root_test["test_errors"], "test_errors")
check_metric_value(root_test["test_failures"], "test_failures")

# tests = m6 metrics
tests = float(root_test["tests"])
# test_errors = m7 metrics
Expand Down
6 changes: 3 additions & 3 deletions tests/integration/test_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ def test_analysis_sucess():

assert response.status_code == 200
assert response.json["characteristics"] == {
"maintainability": 0.5,
"maintainability": 0.6666666666666665,
"reliability": 0.7142857142857143,
}
assert response.json["subcharacteristics"] == {
"modifiability": 0.5,
"modifiability": 0.6666666666666665,
"testing_status": 0.7142857142857143,
}
assert response.json["sqc"] == {"sqc": 0.6165241607725739}
assert response.json["sqc"] == {"sqc": 0.6908865775498528}
Loading

0 comments on commit 5794e68

Please sign in to comment.