Skip to content

Commit 1a76b34

Browse files
authored
Merge pull request #15 from naver/ksmail13/feat/divide_package
Divide module and support multi module project
2 parents c5dc3e3 + 1aa9436 commit 1a76b34

File tree

89 files changed

+887
-402
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+887
-402
lines changed

README.md

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,31 +44,36 @@ then maven would make jar `target/coverchecker-${version}-jar-with-dependencies.
4444
# Execute with parameter
4545

4646
```sh
47-
java -jar target/coverchecker-${version}-jar-with-dependencies.jar \
48-
-c ${coverageReportPath} \
49-
-g ${githubAccessToken} \
50-
-r ${githubRepositoryPath} \
51-
-t ${coverageThreshold} \
52-
-u ${githubHost} \
53-
-p ${pullrequestNo} \
47+
java -jar cover-checker-console/target/cover-checker-console-${version}-jar-with-dependencies.jar \
48+
--cover ${coverageReportPath} \
49+
--github-token ${githubAccessToken} \
50+
--repo ${githubRepositoryPath} \
51+
--threshold ${coverageThreshold} \
52+
--github-url ${githubHost} \
53+
--pr ${pullrequestNo} \
5454
-type (jacoco | cobertura)
5555
```
5656

5757
### Parameter
5858

5959
```sh
60-
usage: coverchecker.jar -c <arg> [-d <arg>] [-dt <arg>] [-ft <arg>] -g <arg> [-p <arg>] -r <arg> -t <arg> [-type <arg>] -u <arg>
61-
62-
-c,--cover <arg> coverage report path(recommend absolute path)
63-
-d,--diff <arg> diff file path(recommend absolute path)
60+
usage: coverchecker.jar -c <arg> [-d <arg>] [-dt <arg>] [-ft <arg>] [-g <arg>]
61+
[-p <arg>] [-r <arg>] -t <arg> [-type <arg>] [-u <arg>]
62+
-c,--cover <arg> coverage report paths(absolute recommend), coverage
63+
report path can take multiple paths for multi-module
64+
project
65+
-d,--diff <arg> diff file path(absolute recommend)
6466
-dt,--diff-type <arg> diff type (github | file)
65-
-ft,--file-threshold <arg>file pass threshold default : 0
67+
-ft,--file-threshold <arg>coverage report type (jacoco | cobertura) default is
68+
jacoco
6669
-g,--github-token <arg> github oauth token
67-
-p,--pr <arg> github pr number default : ${ghprbPullId} from github pull request builder
70+
-p,--pr <arg> github pr number
6871
-r,--repo <arg> github repo
6972
-t,--threshold <arg> coverage pass threshold
70-
-type <arg> coverage report type (jacoco | cobertura) default : jacoco
71-
-u,--github-url <arg> github url
73+
-type <arg> coverage report type (jacoco | cobertura) default is
74+
jacoco
75+
-u,--github-url <arg> The url when you working on github enterprise url.
76+
default is api.github.com
7277
```
7378

7479
## License

README_ko.md

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,28 +46,33 @@ $ ./mvnw clean compile package
4646
## 실행
4747

4848
```sh
49-
java -jar target/coverchecker-${version}-jar-with-dependencies.jar \
50-
-c ${coverageReportPath} \
51-
-g ${githubAccessToken} \
52-
-r ${githubRepositoryPath} \
53-
-t ${coverageThreshold} \
54-
-u ${githubHost} \
55-
-p ${pullrequestNo} \
49+
java -jar cover-checker-console/target/cover-checker-console-${version}-jar-with-dependencies.jar \
50+
--cover ${coverageReportPath} \
51+
--github-token ${githubAccessToken} \
52+
--repo ${githubRepositoryPath} \
53+
--threshold ${coverageThreshold} \
54+
--github-url ${githubHost} \
55+
--pr ${pullrequestNo} \
5656
-type (jacoco | cobertura)
5757
```
5858

5959
### 파라메터 설명
6060
```sh
61-
usage: coverchecker.jar -c <arg> [-d <arg>] [-dt <arg>] [-ft <arg>] -g <arg> [-p <arg>] -r <arg> -t <arg> [-type <arg>] -u <arg>
62-
63-
-c,--cover <arg> coverage report path(recommend absolute path)
64-
-d,--diff <arg> diff file path(recommend absolute path)
61+
usage: coverchecker.jar -c <arg> [-d <arg>] [-dt <arg>] [-ft <arg>] [-g <arg>]
62+
[-p <arg>] [-r <arg>] -t <arg> [-type <arg>] [-u <arg>]
63+
-c,--cover <arg> coverage report paths(absolute recommend), coverage
64+
report path can take multiple paths for multi-module
65+
project
66+
-d,--diff <arg> diff file path(absolute recommend)
6567
-dt,--diff-type <arg> diff type (github | file)
66-
-ft,--file-threshold <arg>file pass threshold default : 0
68+
-ft,--file-threshold <arg>coverage report type (jacoco | cobertura) default is
69+
jacoco
6770
-g,--github-token <arg> github oauth token
68-
-p,--pr <arg> github pr number default : ${ghprbPullId} from github pull request builder
71+
-p,--pr <arg> github pr number
6972
-r,--repo <arg> github repo
7073
-t,--threshold <arg> coverage pass threshold
71-
-type <arg> coverage report type (jacoco | cobertura) default : jacoco
72-
-u,--github-url <arg> github url
74+
-type <arg> coverage report type (jacoco | cobertura) default is
75+
jacoco
76+
-u,--github-url <arg> The url when you working on github enterprise url.
77+
default is api.github.com
7378
```

cover-checker-cobertura/pom.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>coverchecker</artifactId>
7+
<groupId>com.naver.nid</groupId>
8+
<version>1.4.0</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>cover-checker-cobertura</artifactId>
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>com.naver.nid</groupId>
17+
<artifactId>cover-checker-core</artifactId>
18+
<version>${project.parent.version}</version>
19+
</dependency>
20+
</dependencies>
21+
</project>

src/main/java/com/naver/nid/cover/parser/coverage/cobertura/CoberturaReportHandler.java renamed to cover-checker-cobertura/src/main/java/com/naver/nid/cover/cobertura/CoberturaCoverageReportHandler.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,14 @@
1313
See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
16-
package com.naver.nid.cover.parser.coverage.cobertura;
16+
package com.naver.nid.cover.cobertura;
1717

18-
import com.naver.nid.cover.parser.coverage.ReportXmlHandler;
18+
import com.naver.nid.cover.parser.coverage.CoverageReportXmlHandler;
1919
import com.naver.nid.cover.parser.coverage.model.CoverageStatus;
2020
import com.naver.nid.cover.parser.coverage.model.FileCoverageReport;
2121
import com.naver.nid.cover.parser.coverage.model.LineCoverageReport;
2222
import lombok.extern.slf4j.Slf4j;
23-
import org.slf4j.Logger;
24-
import org.slf4j.LoggerFactory;
2523
import org.xml.sax.Attributes;
26-
import org.xml.sax.SAXException;
2724

2825
import java.util.ArrayList;
2926
import java.util.HashMap;
@@ -35,7 +32,7 @@
3532
* non thread safe
3633
*/
3734
@Slf4j
38-
public class CoberturaReportHandler extends ReportXmlHandler {
35+
public class CoberturaCoverageReportHandler extends CoverageReportXmlHandler {
3936

4037
private static final String ATTR_FILENAME = "filename";
4138
private static final String ATTR_HITS = "hits";

src/test/java/com/naver/nid/cover/parser/coverage/cobertura/CoberturaXmlReportParserTest.java renamed to cover-checker-cobertura/src/test/java/com/naver/nid/cover/cobertura/CoberturaXmlReportParserTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.naver.nid.cover.parser.coverage.cobertura;
1+
package com.naver.nid.cover.cobertura;
22

33
import com.naver.nid.cover.parser.coverage.CoverageReportParser;
44
import com.naver.nid.cover.parser.coverage.XmlCoverageReportParser;
@@ -10,13 +10,12 @@
1010

1111
import static org.junit.jupiter.api.Assertions.assertEquals;
1212
import static org.junit.jupiter.api.Assertions.assertSame;
13-
import static org.junit.jupiter.api.Assertions.assertTrue;
1413

1514
class CoberturaXmlReportParserTest {
1615

1716
@Test
1817
public void parseCobertura() {
19-
CoverageReportParser parser = new XmlCoverageReportParser(new CoberturaReportHandler());
18+
CoverageReportParser parser = new XmlCoverageReportParser(new CoberturaCoverageReportHandler());
2019

2120
List<FileCoverageReport> parsed = parser.parse(getClass().getClassLoader().getResource("reports/coverage.xml"));
2221
assertEquals(1, parsed.size());

src/test/resources/reports/coverage.xml renamed to cover-checker-cobertura/src/test/resources/reports/coverage.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<source>/home/minkyukim/Documents/work/coverchecker/target/generated-sources/annotations</source>
99
</sources>
1010
<packages>
11-
<package name="com.naver.nid.cover.parser.coverage.cobertura" line-rate="1.0" branch-rate="0.8846153846153846" complexity="3.6666666666666665">
11+
<package name="com.naver.nid.cover.cobertura" line-rate="1.0" branch-rate="0.8846153846153846" complexity="3.6666666666666665">
1212
<classes>
13-
<class name="com.naver.nid.cover.parser.coverage.cobertura.CoberturaReportHandler" filename="com/naver/nid/cover/parser/coverage/cobertura/CoberturaReportHandler.java" line-rate="1.0" branch-rate="0.8846153846153846" complexity="3.6666666666666665">
13+
<class name="com.naver.nid.cover.cobertura.CoberturaCoverageReportHandler" filename="com/naver/nid/cover/parser/coverage/cobertura/CoberturaReportHandler.java" line-rate="1.0" branch-rate="0.8846153846153846" complexity="3.6666666666666665">
1414
<methods>
1515
<method name="&lt;clinit&gt;" signature="()V" line-rate="1.0" branch-rate="1.0" complexity="0">
1616
<lines>

cover-checker-console/pom.xml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>coverchecker</artifactId>
7+
<groupId>com.naver.nid</groupId>
8+
<version>1.4.0</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>cover-checker-console</artifactId>
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>com.naver.nid</groupId>
17+
<artifactId>cover-checker-core</artifactId>
18+
<version>${project.parent.version}</version>
19+
</dependency>
20+
<dependency>
21+
<groupId>com.naver.nid</groupId>
22+
<artifactId>cover-checker-cobertura</artifactId>
23+
<version>${project.parent.version}</version>
24+
</dependency>
25+
<dependency>
26+
<groupId>com.naver.nid</groupId>
27+
<artifactId>cover-checker-jacoco</artifactId>
28+
<version>${project.parent.version}</version>
29+
</dependency>
30+
<dependency>
31+
<groupId>com.naver.nid</groupId>
32+
<artifactId>cover-checker-github</artifactId>
33+
<version>${project.parent.version}</version>
34+
</dependency>
35+
</dependencies>
36+
</project>

src/main/java/com/naver/nid/cover/CoverChecker.java renamed to cover-checker-console/src/main/java/com/naver/nid/cover/CoverChecker.java

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,57 +17,51 @@
1717

1818
import com.naver.nid.cover.checker.NewCoverageChecker;
1919
import com.naver.nid.cover.checker.model.NewCoverageCheckReport;
20-
import com.naver.nid.cover.github.GithubPullRequestManager;
21-
import com.naver.nid.cover.parser.coverage.CoverageReportParser;
22-
import com.naver.nid.cover.parser.coverage.model.FileCoverageReport;
23-
import com.naver.nid.cover.parser.diff.*;
20+
import com.naver.nid.cover.parser.diff.DiffParser;
2421
import com.naver.nid.cover.parser.diff.model.Diff;
2522
import com.naver.nid.cover.reporter.Reporter;
2623
import com.naver.nid.cover.util.ObjectFactory;
2724
import com.naver.nid.cover.util.Parameter;
2825
import com.naver.nid.cover.util.ParameterParser;
26+
import com.naver.nid.cover.parser.coverage.CoverageReportParser;
27+
import com.naver.nid.cover.parser.coverage.model.FileCoverageReport;
2928
import lombok.RequiredArgsConstructor;
3029
import lombok.extern.slf4j.Slf4j;
3130

32-
import java.util.ArrayList;
3331
import java.util.List;
34-
import java.util.Optional;
3532
import java.util.concurrent.CompletableFuture;
3633
import java.util.function.Function;
34+
import java.util.function.Supplier;
3735
import java.util.stream.Collectors;
3836
import java.util.stream.Stream;
3937

4038
@Slf4j
4139
@RequiredArgsConstructor
4240
public final class CoverChecker {
4341

44-
private final GithubPullRequestManager prManager;
4542
private final CoverageReportParser coverageParser;
4643
private final DiffParser diffParser;
4744
private final NewCoverageChecker checker;
4845
private final Reporter reporter;
4946

5047
public CoverChecker(ObjectFactory objectManager) {
51-
this(objectManager.getPrManager(),
52-
objectManager.getCoverageReportParser(),
53-
objectManager.getDiffParser(),
48+
this(objectManager.getCoverageReportParser(),
49+
objectManager.getDiffReader(),
5450
objectManager.getNewCoverageParser(),
5551
objectManager.getReporter());
5652
}
5753

5854
public boolean check(Parameter param) {
5955
try {
60-
RawDiffReader diffReader = createDiffReader(param);
61-
6256
log.info("Check new line of code coverage by {}", coverageParser.getClass().getSimpleName());
6357
CompletableFuture<List<FileCoverageReport>> coverage = param.getCoveragePath().stream()
6458
.map(s -> executeByBackground((Function<String, List<FileCoverageReport>>) coverageParser::parse).apply(s))
6559
.reduce((f1, f2) -> f1.thenCombine(f2, (r1, r2) -> Stream.concat(r1.stream(), r2.stream()).collect(Collectors.toList())))
6660
.orElseThrow(() -> new IllegalStateException("No Coverage Report"));
6761

68-
log.info("read diff by {}", diffReader.getClass().getSimpleName());
62+
log.info("read diff by {}", diffParser.getClass().getSimpleName());
6963
CompletableFuture<List<Diff>> diff = executeByBackground(diffParser::parse)
70-
.apply(diffReader)
64+
.get()
7165
.thenApplyAsync(s -> s.collect(Collectors.toList()));
7266

7367
NewCoverageCheckReport check = checker.check(coverage.join(), diff.join(), param.getThreshold(), param.getFileThreshold());
@@ -89,12 +83,8 @@ private <P, R> Function<P, CompletableFuture<R>> executeByBackground(Function<P,
8983
return (P param) -> CompletableFuture.supplyAsync(() -> execute.apply(param));
9084
}
9185

92-
RawDiffReader createDiffReader(Parameter param) {
93-
if ("file".equals(param.getDiffType())) {
94-
return new FileRawDiffReader(param.getDiffPath());
95-
} else {
96-
return new GithubRawDiffReader(prManager);
97-
}
86+
private <R> Supplier<CompletableFuture<R>> executeByBackground(Supplier<R> execute) {
87+
return () -> CompletableFuture.supplyAsync(execute);
9888
}
9989

10090
public static void main(String[] args) {

src/main/java/com/naver/nid/cover/util/ObjectFactory.java renamed to cover-checker-console/src/main/java/com/naver/nid/cover/util/ObjectFactory.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,18 @@
1515
*/
1616
package com.naver.nid.cover.util;
1717

18+
import com.naver.nid.cover.github.parser.GithubDiffReader;
19+
import com.naver.nid.cover.parser.diff.DiffParser;
1820
import com.naver.nid.cover.checker.NewCoverageChecker;
19-
import com.naver.nid.cover.github.GithubPullRequestManager;
21+
import com.naver.nid.cover.github.manager.GithubPullRequestManager;
2022
import com.naver.nid.cover.parser.coverage.CoverageReportParser;
2123
import com.naver.nid.cover.parser.coverage.XmlCoverageReportParser;
22-
import com.naver.nid.cover.parser.coverage.cobertura.CoberturaReportHandler;
23-
import com.naver.nid.cover.parser.coverage.jacoco.JacocoReportParser;
24-
import com.naver.nid.cover.parser.diff.DiffParser;
24+
import com.naver.nid.cover.cobertura.CoberturaCoverageReportHandler;
25+
import com.naver.nid.cover.jacoco.JacocoReportParser;
26+
import com.naver.nid.cover.parser.diff.FileDiffReader;
2527
import com.naver.nid.cover.reporter.Reporter;
26-
import com.naver.nid.cover.reporter.console.ConsoleReporter;
27-
import com.naver.nid.cover.reporter.github.GithubPullRequestReporter;
28+
import com.naver.nid.cover.reporter.ConsoleReporter;
29+
import com.naver.nid.cover.github.reporter.GithubPullRequestReporter;
2830

2931
/**
3032
* {@link Parameter}에 따라 내부 객체를 생성하는 Factory 객체
@@ -37,13 +39,17 @@ public ObjectFactory(Parameter param) {
3739
this.param = param;
3840
}
3941

40-
public DiffParser getDiffParser() {
41-
return new DiffParser();
42+
public DiffParser getDiffReader() {
43+
if ("file".equals(param.getDiffType())) {
44+
return new FileDiffReader(param.getDiffPath());
45+
} else {
46+
return new GithubDiffReader(getPrManager());
47+
}
4248
}
4349

4450
public CoverageReportParser getCoverageReportParser() {
4551
if ("cobertura".equals(param.getCoverageType())) {
46-
return new XmlCoverageReportParser(new CoberturaReportHandler());
52+
return new XmlCoverageReportParser(new CoberturaCoverageReportHandler());
4753
} else {
4854
return new JacocoReportParser();
4955
}
@@ -54,7 +60,11 @@ public NewCoverageChecker getNewCoverageParser() {
5460
}
5561

5662
public Reporter getReporter() {
57-
return new ConsoleReporter().andThen(new GithubPullRequestReporter(getPrManager()))::accept;
63+
ConsoleReporter consoleReporter = new ConsoleReporter();
64+
if (param.getPrNumber() == -1) {
65+
return consoleReporter;
66+
}
67+
return consoleReporter.andThen(new GithubPullRequestReporter(getPrManager()))::accept;
5868
}
5969

6070
public GithubPullRequestManager getPrManager() {

0 commit comments

Comments
 (0)