@@ -14,6 +14,7 @@ public class FitnessFunction
14
14
private ArrayList <String > nonPriorityClasses ;
15
15
private ArrayList <List <CompilationUnit >> previousUnits ;
16
16
private HashMap <String , Integer > elementScores ;
17
+ float baseline = 0.01f ;
17
18
18
19
// Only use if normalisation functions (calculateBenchmark, calculateNormalisedScore) are not being used.
19
20
public FitnessFunction (ArrayList <MetricSpecification > configuration )
@@ -24,35 +25,34 @@ public FitnessFunction(ArrayList<MetricSpecification> configuration)
24
25
public FitnessFunction (Metrics m , ArrayList <MetricSpecification > configuration )
25
26
{
26
27
this .configuration = configuration ;
27
- float baseline = 0.01f ;
28
28
29
29
this .initialMetrics = new HashMap <String , Float >();
30
- initialMetrics .put ("classDesignSize" , (float ) m .classDesignSize () == 0 ? baseline : (float ) m .classDesignSize ());
31
- initialMetrics .put ("numberOfHierarchies" , (float ) m .numberOfHierarchies () == 0 ? baseline : (float ) m .numberOfHierarchies ());
32
- initialMetrics .put ("averageNumberOfAncestors" , m .averageNumberOfAncestors () == 0 ? baseline : m .averageNumberOfAncestors ());
33
- initialMetrics .put ("dataAccessMetric" , m .dataAccessMetric () == 0 ? baseline : m .dataAccessMetric ());
34
- initialMetrics .put ("directClassCoupling" , m .directClassCoupling () == 0 ? baseline : m .directClassCoupling ());
35
- initialMetrics .put ("cohesionAmongMethods" , m .cohesionAmongMethods () == 0 ? baseline : m .cohesionAmongMethods ());
36
- initialMetrics .put ("aggregation" , m .aggregation () == 0 ? baseline : m .aggregation ());
37
- initialMetrics .put ("functionalAbstraction" , m .functionalAbstraction () == 0 ? baseline : m .functionalAbstraction ());
38
- initialMetrics .put ("numberOfPolymorphicMethods" , m .numberOfPolymorphicMethods () == 0 ? baseline : m .numberOfPolymorphicMethods ());
39
- initialMetrics .put ("classInterfaceSize" , m .classInterfaceSize () == 0 ? baseline : m .classInterfaceSize ());
40
- initialMetrics .put ("numberOfMethods" , m .numberOfMethods () == 0 ? baseline : m .numberOfMethods ());
41
- initialMetrics .put ("weightedMethodsPerClass" , m .weightedMethodsPerClass () == 0 ? baseline : m .weightedMethodsPerClass ());
42
- initialMetrics .put ("numberOfChildren" , m .numberOfChildren () == 0 ? baseline : m .numberOfChildren ());
43
- initialMetrics .put ("abstractness" , m .abstractness () == 0 ? baseline : m .abstractness ());
44
- initialMetrics .put ("abstractRatio" , m .abstractRatio () == 0 ? baseline : m .abstractRatio ());
45
- initialMetrics .put ("staticRatio" , m .staticRatio () == 0 ? baseline : m .staticRatio ());
46
- initialMetrics .put ("finalRatio" , m .finalRatio () == 0 ? baseline : m .finalRatio ());
47
- initialMetrics .put ("constantRatio" , m .constantRatio () == 0 ? baseline : m .constantRatio ());
48
- initialMetrics .put ("innerClassRatio" , m .innerClassRatio () == 0 ? baseline : m .innerClassRatio ());
49
- initialMetrics .put ("referencedMethodsRatio" , m .referencedMethodsRatio () == 0 ? baseline : m .referencedMethodsRatio ());
50
- initialMetrics .put ("visibilityRatio" , m .visibilityRatio () == 0 ? baseline : m .visibilityRatio ());
51
- initialMetrics .put ("linesOfCode" , (float ) m .linesOfCode () == 0 ? baseline : (float ) m .linesOfCode ());
52
- initialMetrics .put ("numberOfFiles" , (float ) m .numberOfFiles () == 0 ? baseline : (float ) m .numberOfFiles ());
53
- initialMetrics .put ("priority" , baseline );
54
- initialMetrics .put ("diversity" , baseline );
55
- initialMetrics .put ("elementRecentness" , baseline );
30
+ initialMetrics .put ("classDesignSize" , (float ) m .classDesignSize () == 0 ? this . baseline : (float ) m .classDesignSize ());
31
+ initialMetrics .put ("numberOfHierarchies" , (float ) m .numberOfHierarchies () == 0 ? this . baseline : (float ) m .numberOfHierarchies ());
32
+ initialMetrics .put ("averageNumberOfAncestors" , m .averageNumberOfAncestors () == 0 ? this . baseline : m .averageNumberOfAncestors ());
33
+ initialMetrics .put ("dataAccessMetric" , m .dataAccessMetric () == 0 ? this . baseline : m .dataAccessMetric ());
34
+ initialMetrics .put ("directClassCoupling" , m .directClassCoupling () == 0 ? this . baseline : m .directClassCoupling ());
35
+ initialMetrics .put ("cohesionAmongMethods" , m .cohesionAmongMethods () == 0 ? this . baseline : m .cohesionAmongMethods ());
36
+ initialMetrics .put ("aggregation" , m .aggregation () == 0 ? this . baseline : m .aggregation ());
37
+ initialMetrics .put ("functionalAbstraction" , m .functionalAbstraction () == 0 ? this . baseline : m .functionalAbstraction ());
38
+ initialMetrics .put ("numberOfPolymorphicMethods" , m .numberOfPolymorphicMethods () == 0 ? this . baseline : m .numberOfPolymorphicMethods ());
39
+ initialMetrics .put ("classInterfaceSize" , m .classInterfaceSize () == 0 ? this . baseline : m .classInterfaceSize ());
40
+ initialMetrics .put ("numberOfMethods" , m .numberOfMethods () == 0 ? this . baseline : m .numberOfMethods ());
41
+ initialMetrics .put ("weightedMethodsPerClass" , m .weightedMethodsPerClass () == 0 ? this . baseline : m .weightedMethodsPerClass ());
42
+ initialMetrics .put ("numberOfChildren" , m .numberOfChildren () == 0 ? this . baseline : m .numberOfChildren ());
43
+ initialMetrics .put ("abstractness" , m .abstractness () == 0 ? this . baseline : m .abstractness ());
44
+ initialMetrics .put ("abstractRatio" , m .abstractRatio () == 0 ? this . baseline : m .abstractRatio ());
45
+ initialMetrics .put ("staticRatio" , m .staticRatio () == 0 ? this . baseline : m .staticRatio ());
46
+ initialMetrics .put ("finalRatio" , m .finalRatio () == 0 ? this . baseline : m .finalRatio ());
47
+ initialMetrics .put ("constantRatio" , m .constantRatio () == 0 ? this . baseline : m .constantRatio ());
48
+ initialMetrics .put ("innerClassRatio" , m .innerClassRatio () == 0 ? this . baseline : m .innerClassRatio ());
49
+ initialMetrics .put ("referencedMethodsRatio" , m .referencedMethodsRatio () == 0 ? this . baseline : m .referencedMethodsRatio ());
50
+ initialMetrics .put ("visibilityRatio" , m .visibilityRatio () == 0 ? this . baseline : m .visibilityRatio ());
51
+ initialMetrics .put ("linesOfCode" , (float ) m .linesOfCode () == 0 ? this . baseline : (float ) m .linesOfCode ());
52
+ initialMetrics .put ("numberOfFiles" , (float ) m .numberOfFiles () == 0 ? this . baseline : (float ) m .numberOfFiles ());
53
+ initialMetrics .put ("priority" , this . baseline );
54
+ initialMetrics .put ("diversity" , this . baseline );
55
+ initialMetrics .put ("elementRecentness" , this . baseline );
56
56
}
57
57
58
58
public float calculateBenchmark ()
@@ -96,7 +96,7 @@ public float calculateNormalisedScore(Metrics m)
96
96
}
97
97
else
98
98
{
99
- float metricValue = (findMetricValue (m , metric .getName ()) == 0 ) ? 0.01f : findMetricValue (m , metric .getName ());
99
+ float metricValue = (findMetricValue (m , metric .getName ()) == 0 ) ? this . baseline : findMetricValue (m , metric .getName ());
100
100
value = metricValue / this .initialMetrics .get (metric .getName ());
101
101
value --;
102
102
}
0 commit comments