Skip to content

Commit f2f24db

Browse files
committed
Add True Class Name
Class name and file name were being conflated. In most cases the two are the same but not always. I renamed the existing className property in RankedDisharmony to fileName to reflect what it actually is. I added a new className property which is set to the actual className. To get class name passed into the logic where RankedDisharmony is constructed I also had to update the GodClass definition to include className as well as file name. The html and cvs report output should not change, as I updated them to call getFileName from ranked disharmony rather than getClassName. This preserves existing behavior. The only output which should change is the json report which will now expose both fileName and className, letting the consumer choose which they care about.
1 parent cfdddd2 commit f2f24db

File tree

10 files changed

+33
-16
lines changed

10 files changed

+33
-16
lines changed

cost-benefit-calculator/src/main/java/org/hjug/cbc/RankedDisharmony.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
public class RankedDisharmony {
1111

1212
private final String path;
13+
private final String fileName;
1314
private final String className;
1415
private final Integer effortRank;
1516
private final Integer changePronenessRank;
@@ -29,7 +30,8 @@ public class RankedDisharmony {
2930
public RankedDisharmony(GodClass godClass, ScmLogInfo scmLogInfo) {
3031
path = scmLogInfo.getPath();
3132
// from https://stackoverflow.com/questions/1011287/get-file-name-from-a-file-location-in-java
32-
className = Paths.get(path).getFileName().toString();
33+
fileName = Paths.get(path).getFileName().toString();
34+
className = godClass.getClassName();
3335
changePronenessRank = scmLogInfo.getChangePronenessRank();
3436
effortRank = godClass.getOverallRank();
3537
priority = changePronenessRank - effortRank;

effort-ranker/src/main/java/org/hjug/metrics/GodClass.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
@Data
1111
public class GodClass {
1212

13+
private String className;
1314
private String fileName;
1415
private String packageName;
1516
private Integer wmc;
@@ -22,7 +23,8 @@ public class GodClass {
2223
private Integer sumOfRanks;
2324
private Integer overallRank;
2425

25-
public GodClass(String fileName, String packageName, String result) {
26+
public GodClass(String className, String fileName, String packageName, String result) {
27+
this.className = className;
2628
this.fileName = fileName;
2729
this.packageName = packageName;
2830

effort-ranker/src/main/java/org/hjug/metrics/PMDGodClassRuleRunner.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ public Optional<GodClass> runPMD(String sourceCodeFileName, InputStream inputStr
7373
// write results
7474
if (!ctx.getReport().isEmpty()) {
7575
for (final RuleViolation violation : ctx.getReport()) {
76-
godClass = new GodClass(sourceCodeFileName, violation.getPackageName(), violation.getDescription());
76+
godClass = new GodClass(
77+
violation.getClassName(),
78+
sourceCodeFileName,
79+
violation.getPackageName(),
80+
violation.getDescription());
7781
}
7882
}
7983
} catch (PMDException ignore) {

effort-ranker/src/test/java/org/hjug/metrics/GodClassParsingTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void after() {
2525
@Test
2626
public void test() {
2727
String result = "Possible God Class (WMC=9200, ATFD=1,700, TCC=4.597%)";
28-
GodClass god = new GodClass("a.txt", "org.hjug", result);
28+
GodClass god = new GodClass("a", "a.txt", "org.hjug", result);
2929
assertEquals(Integer.valueOf(9200), god.getWmc());
3030
assertEquals(Integer.valueOf(1700), god.getAtfd());
3131
assertEquals(Float.valueOf(4.597f), god.getTcc());

effort-ranker/src/test/java/org/hjug/metrics/GodClassRankerTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,26 @@ public class GodClassRankerTest {
1414
private final GodClassRanker godClassRanker = new GodClassRanker();
1515

1616
private final GodClass attributeHandler = new GodClass(
17+
"AttributeHandler",
1718
"org/hjug/git/AttributeHandler.java",
1819
"org.apache.myfaces.tobago.facelets",
1920
"null (WMC=79, ATFD=79, TCC=0.027777777777777776)");
2021
private final GodClass attributeHandler2 = new GodClass(
22+
"AttributeHandler",
2123
"org/hjug/git/AttributeHandler.java",
2224
"org.apache.myfaces.tobago.facelets",
2325
"null (WMC=79, ATFD=79, TCC=0.027777777777777776)");
24-
private final GodClass sorter =
25-
new GodClass("Sorter.java", "org.apache.myfaces.tobago.facelets", " God class (WMC=51, ATFD=25, TCC=0.2)");
26-
private final GodClass sorter2 =
27-
new GodClass("Sorter2.java", "org.apache.myfaces.tobago.facelets", " God class (WMC=51, ATFD=25, TCC=0.2)");
26+
private final GodClass sorter = new GodClass(
27+
"Sorter", "Sorter.java", "org.apache.myfaces.tobago.facelets", " God class (WMC=51, ATFD=25, TCC=0.2)");
28+
private final GodClass sorter2 = new GodClass(
29+
"Sorter", "Sorter2.java", "org.apache.myfaces.tobago.facelets", " God class (WMC=51, ATFD=25, TCC=0.2)");
2830
private final GodClass themeImpl = new GodClass(
31+
"ThemeImpl",
2932
"ThemeImpl.java",
3033
"org.apache.myfaces.tobago.facelets",
3134
"God class (WMC=60, ATFD=16, TCC=0.07816091954022988)");
3235
private final GodClass themeImpl2 = new GodClass(
36+
"ThemeImpl",
3337
"ThemeImpl2.java",
3438
"org.apache.myfaces.tobago.facelets",
3539
"God class (WMC=60, ATFD=16, TCC=0.07816091954022988)");

graph-data-generator/src/main/java/org/hjug/gdg/GraphDataGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public String generateBubbleChartData(List<RankedDisharmony> rankedDisharmonies)
4141
RankedDisharmony rankedDisharmony = rankedDisharmonies.get(i);
4242
chartData.append("[");
4343
chartData.append("'");
44-
chartData.append(rankedDisharmony.getClassName());
44+
chartData.append(rankedDisharmony.getFileName());
4545
chartData.append("',");
4646
chartData.append(rankedDisharmony.getEffortRank());
4747
chartData.append(",");

graph-data-generator/src/test/java/org/hjug/gdg/GraphDataGeneratorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public void getScriptEnd() {
5555
@Test
5656
public void generateBubbleChartDataOneDataPoint() {
5757
GodClass godClass = new GodClass(
58+
"AttributeHandler",
5859
"AttributeHandler.java",
5960
"org.apache.myfaces.tobago.facelets",
6061
"(WMC=77, ATFD=105, TCC=15.555999755859375)");
@@ -76,6 +77,7 @@ public void generateBubbleChartDataOneDataPoint() {
7677
@Test
7778
public void generateBubbleChartDataTwoDataPoints() {
7879
GodClass godClass = new GodClass(
80+
"AttributeHandler",
7981
"AttributeHandler.java",
8082
"org.apache.myfaces.tobago.facelets",
8183
"(WMC=77, ATFD=105, TCC=15.555999755859375)");

refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstJsonReport/JsonReportDisharmonyEntry.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ class JsonReportDisharmonyEntry {
1515
.withLocale(Locale.getDefault())
1616
.withZone(ZoneId.systemDefault());
1717

18+
private final String fileName;
19+
1820
private final String className;
1921

22+
private final String fullFilePath;
23+
2024
private final Integer effortRank;
2125

2226
private final Integer changePronenessRank;
@@ -29,18 +33,17 @@ class JsonReportDisharmonyEntry {
2933

3034
private final String mostRecentCommitTime;
3135

32-
private final String fullPath;
33-
3436
public static JsonReportDisharmonyEntry fromRankedDisharmony(RankedDisharmony entry) {
3537
return JsonReportDisharmonyEntry.builder()
38+
.fileName(entry.getFileName())
3639
.className(entry.getClassName())
3740
.effortRank(entry.getEffortRank())
3841
.changePronenessRank(entry.getChangePronenessRank())
3942
.priority(entry.getPriority())
4043
.weightedMethodCount(entry.getWmc())
4144
.commitCount(entry.getCommitCount())
4245
.mostRecentCommitTime(formatter.format(entry.getMostRecentCommitTime()))
43-
.fullPath(entry.getPath())
46+
.fullFilePath(entry.getPath())
4447
.build();
4548
}
4649
}

refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenCsvReport.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ private DateTimeFormatter createCsvDateTimeFormatter() {
180180

181181
private String[] getDataList(RankedDisharmony rankedDisharmony) {
182182
String[] simpleRankedDisharmonyData = {
183-
rankedDisharmony.getClassName(),
183+
rankedDisharmony.getFileName(),
184184
rankedDisharmony.getPriority().toString(),
185185
rankedDisharmony.getChangePronenessRank().toString(),
186186
rankedDisharmony.getEffortRank().toString(),
@@ -190,7 +190,7 @@ private String[] getDataList(RankedDisharmony rankedDisharmony) {
190190
};
191191

192192
String[] detailedRankedDisharmonyData = {
193-
rankedDisharmony.getClassName(),
193+
rankedDisharmony.getFileName(),
194194
rankedDisharmony.getPriority().toString(),
195195
rankedDisharmony.getChangePronenessRank().toString(),
196196
rankedDisharmony.getEffortRank().toString(),

refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenReport.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ public void execute() {
278278
stringBuilder.append("<tr>");
279279

280280
String[] simpleRankedDisharmonyData = {
281-
rankedDisharmony.getClassName(),
281+
rankedDisharmony.getFileName(),
282282
rankedDisharmony.getPriority().toString(),
283283
rankedDisharmony.getChangePronenessRank().toString(),
284284
rankedDisharmony.getEffortRank().toString(),
@@ -288,7 +288,7 @@ public void execute() {
288288
};
289289

290290
String[] detailedRankedDisharmonyData = {
291-
rankedDisharmony.getClassName(),
291+
rankedDisharmony.getFileName(),
292292
rankedDisharmony.getPriority().toString(),
293293
rankedDisharmony.getChangePronenessRank().toString(),
294294
rankedDisharmony.getEffortRank().toString(),

0 commit comments

Comments
 (0)