Skip to content

Commit 6856ce2

Browse files
Passing repository path as constructor value for CostBenefitCalculator
Passing repository path as constructor value for CostBenefitCalculator instead of to each method
1 parent 5562b28 commit 6856ce2

File tree

6 files changed

+33
-36
lines changed

6 files changed

+33
-36
lines changed

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@
2626
public class CostBenefitCalculator {
2727

2828
private Report report;
29-
private String projBaseDir = null;
29+
private String repositoryPath = null;
30+
31+
public CostBenefitCalculator(String repositoryPath) {
32+
this.repositoryPath = repositoryPath;
33+
}
3034

3135
// copied from PMD's PmdTaskImpl.java and modified
32-
public void runPmdAnalysis(String projectBaseDir) throws IOException {
33-
projBaseDir = projectBaseDir;
36+
public void runPmdAnalysis() throws IOException {
3437
PMDConfiguration configuration = new PMDConfiguration();
3538

3639
try (PmdAnalysis pmd = PmdAnalysis.create(configuration)) {
@@ -41,17 +44,17 @@ public void runPmdAnalysis(String projectBaseDir) throws IOException {
4144
cboClassRule.setLanguage(LanguageRegistry.PMD.getLanguageByFullName("Java"));
4245
pmd.addRuleSet(RuleSet.forSingleRule(cboClassRule));
4346

44-
log.info("files to be scanned: " + Paths.get(projectBaseDir));
47+
log.info("files to be scanned: " + Paths.get(repositoryPath));
4548

46-
try (Stream<Path> files = Files.walk(Paths.get(projectBaseDir))) {
49+
try (Stream<Path> files = Files.walk(Paths.get(repositoryPath))) {
4750
files.forEach(file -> pmd.files().addFile(file));
4851
}
4952

5053
report = pmd.performAnalysisAndCollectReport();
5154
}
5255
}
5356

54-
public List<RankedDisharmony> calculateGodClassCostBenefitValues(String repositoryPath) {
57+
public List<RankedDisharmony> calculateGodClassCostBenefitValues() {
5558

5659
GitLogReader repositoryLogReader = new GitLogReader();
5760
Repository repository = null;
@@ -140,7 +143,7 @@ <T extends Disharmony> List<ScmLogInfo> getRankedChangeProneness(
140143
return scmLogInfos;
141144
}
142145

143-
public List<RankedDisharmony> calculateCBOCostBenefitValues(String repositoryPath) {
146+
public List<RankedDisharmony> calculateCBOCostBenefitValues() {
144147

145148
GitLogReader repositoryLogReader = new GitLogReader();
146149
Repository repository = null;
@@ -192,6 +195,6 @@ private List<CBOClass> getCBOClasses() {
192195
}
193196

194197
private String getFileName(RuleViolation violation) {
195-
return violation.getFileId().getUriString().replace("file:///" + projBaseDir.replace("\\", "/") + "/", "");
198+
return violation.getFileId().getUriString().replace("file:///" + repositoryPath.replace("\\", "/") + "/", "");
196199
}
197200
}

cost-benefit-calculator/src/test/java/org/hjug/cbc/CostBenefitCalculatorTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ void testCBOViolation() throws IOException, GitAPIException, InterruptedExceptio
4747
git.add().addFilepattern(".").call();
4848
RevCommit firstCommit = git.commit().setMessage("message").call();
4949

50-
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
51-
costBenefitCalculator.runPmdAnalysis(git.getRepository().getDirectory().getParent());
52-
List<RankedDisharmony> disharmonies = costBenefitCalculator.calculateCBOCostBenefitValues(
53-
git.getRepository().getDirectory().getPath());
50+
CostBenefitCalculator costBenefitCalculator =
51+
new CostBenefitCalculator(git.getRepository().getDirectory().getParent());
52+
costBenefitCalculator.runPmdAnalysis();
53+
List<RankedDisharmony> disharmonies = costBenefitCalculator.calculateCBOCostBenefitValues();
5454

5555
Assertions.assertFalse(disharmonies.isEmpty());
5656
}
@@ -80,10 +80,10 @@ void testCostBenefitCalculation() throws IOException, GitAPIException, Interrupt
8080
git.add().addFilepattern(".").call();
8181
RevCommit secondCommit = git.commit().setMessage("message").call();
8282

83-
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
84-
costBenefitCalculator.runPmdAnalysis(git.getRepository().getDirectory().getParent());
85-
List<RankedDisharmony> disharmonies = costBenefitCalculator.calculateGodClassCostBenefitValues(
86-
git.getRepository().getDirectory().getPath());
83+
CostBenefitCalculator costBenefitCalculator =
84+
new CostBenefitCalculator(git.getRepository().getDirectory().getParent());
85+
costBenefitCalculator.runPmdAnalysis();
86+
List<RankedDisharmony> disharmonies = costBenefitCalculator.calculateGodClassCostBenefitValues();
8787

8888
Assertions.assertEquals(1, disharmonies.get(0).getRawPriority().intValue());
8989
Assertions.assertEquals(1, disharmonies.get(1).getRawPriority().intValue());

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -209,18 +209,16 @@ public void executeReport(Locale locale) throws MavenReportException {
209209
return;
210210
}
211211

212-
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
212+
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator(projectBaseDir);
213213
try {
214-
costBenefitCalculator.runPmdAnalysis(projectBaseDir);
214+
costBenefitCalculator.runPmdAnalysis();
215215
} catch (IOException e) {
216216
log.error("Error running PMD analysis.");
217217
throw new RuntimeException(e);
218218
}
219-
List<RankedDisharmony> rankedGodClassDisharmonies =
220-
costBenefitCalculator.calculateGodClassCostBenefitValues(projectBaseDir);
219+
List<RankedDisharmony> rankedGodClassDisharmonies = costBenefitCalculator.calculateGodClassCostBenefitValues();
221220

222-
List<RankedDisharmony> rankedCBODisharmonies =
223-
costBenefitCalculator.calculateCBOCostBenefitValues(projectBaseDir);
221+
List<RankedDisharmony> rankedCBODisharmonies = costBenefitCalculator.calculateCBOCostBenefitValues();
224222

225223
if (rankedGodClassDisharmonies.isEmpty() && rankedCBODisharmonies.isEmpty()) {
226224
mainSink.text("Contratulations! " + projectName + " " + projectVersion

report/src/main/java/org/hjug/refactorfirst/report/CsvReport.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,14 @@ public void execute(
8383
}
8484

8585
// actual calcualte
86-
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
86+
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator(projectBaseDir);
8787
try {
88-
costBenefitCalculator.runPmdAnalysis(projectBaseDir);
88+
costBenefitCalculator.runPmdAnalysis();
8989
} catch (IOException e) {
9090
log.error("Error running PMD analysis.");
9191
throw new RuntimeException(e);
9292
}
93-
List<RankedDisharmony> rankedDisharmonies =
94-
costBenefitCalculator.calculateGodClassCostBenefitValues(projectBaseDir);
93+
List<RankedDisharmony> rankedDisharmonies = costBenefitCalculator.calculateGodClassCostBenefitValues();
9594

9695
rankedDisharmonies.sort(Comparator.comparing(RankedDisharmony::getPriority));
9796

report/src/main/java/org/hjug/refactorfirst/report/SimpleHtmlReport.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,18 +142,16 @@ public void execute(
142142
return;
143143
}
144144

145-
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
145+
CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator(projectBaseDir);
146146
try {
147-
costBenefitCalculator.runPmdAnalysis(projectBaseDir);
147+
costBenefitCalculator.runPmdAnalysis();
148148
} catch (IOException e) {
149149
log.error("Error running PMD analysis.");
150150
throw new RuntimeException(e);
151151
}
152-
List<RankedDisharmony> rankedGodClassDisharmonies =
153-
costBenefitCalculator.calculateGodClassCostBenefitValues(projectBaseDir);
152+
List<RankedDisharmony> rankedGodClassDisharmonies = costBenefitCalculator.calculateGodClassCostBenefitValues();
154153

155-
List<RankedDisharmony> rankedCBODisharmonies =
156-
costBenefitCalculator.calculateCBOCostBenefitValues(projectBaseDir);
154+
List<RankedDisharmony> rankedCBODisharmonies = costBenefitCalculator.calculateCBOCostBenefitValues();
157155

158156
if (rankedGodClassDisharmonies.isEmpty() && rankedCBODisharmonies.isEmpty()) {
159157
stringBuilder

report/src/main/java/org/hjug/refactorfirst/report/json/JsonReportExecutor.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,14 @@ public void execute(File baseDir, String outputDirectory) {
3131
projectBaseDir = Paths.get("").toAbsolutePath().toString();
3232
}
3333

34-
final CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator();
34+
final CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator(projectBaseDir);
3535
try {
36-
costBenefitCalculator.runPmdAnalysis(projectBaseDir);
36+
costBenefitCalculator.runPmdAnalysis();
3737
} catch (IOException e) {
3838
log.error("Error running PMD analysis.");
3939
throw new RuntimeException(e);
4040
}
41-
final List<RankedDisharmony> rankedDisharmonies =
42-
costBenefitCalculator.calculateGodClassCostBenefitValues(projectBaseDir);
41+
final List<RankedDisharmony> rankedDisharmonies = costBenefitCalculator.calculateGodClassCostBenefitValues();
4342
final List<JsonReportDisharmonyEntry> disharmonyEntries = rankedDisharmonies.stream()
4443
.map(JsonReportDisharmonyEntry::fromRankedDisharmony)
4544
.collect(Collectors.toList());

0 commit comments

Comments
 (0)