Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
f480939
Initial Commit
robinmaisch Dec 29, 2023
6ae3fc5
Fixed ReplaceOperation to support swapping elements
robinmaisch Jan 1, 2024
0c6be35
Reorder passes; Fixed Token generation; Extended NodePattern relations
robinmaisch Jan 5, 2024
185b311
Bump CPG dependencies from 8.0.0-alpha-2 to 8.0.0
robinmaisch Jan 5, 2024
7ab9b0f
Add patterns to match one edge of a multi-edge; Introduce 2nd transfo…
robinmaisch Jan 6, 2024
100296a
Major new features:
robinmaisch Feb 29, 2024
4447224
Fixed old tests and some code problems indicated by the IDE
robinmaisch Feb 29, 2024
1b900a8
Merge branch 'jplag:main' into cpg-dev
robinmaisch Feb 29, 2024
722b256
Fix errors from merging JPlag v5.0.0
robinmaisch Feb 29, 2024
4ed18ea
Feature-complete version (before Sonar)
robinmaisch Mar 18, 2024
5536a3f
Apply Spotless
robinmaisch Mar 18, 2024
95fcb9e
Remove CompareFrontendsTest.java
robinmaisch Mar 18, 2024
640e1fa
Fix tests
robinmaisch Mar 18, 2024
eb592f0
Fix tests
robinmaisch Mar 18, 2024
88dd331
Fix JavaDoc
robinmaisch Mar 19, 2024
fc3d079
Add more documentation
robinmaisch Mar 19, 2024
83995bf
Merge remote-tracking branch 'origin/develop' into cpg-dev
robinmaisch Mar 19, 2024
9ad7388
Fix Sonar remarks
robinmaisch Mar 23, 2024
9c25f9f
Add missing files
robinmaisch Mar 23, 2024
b2fc2f1
Fix Regex
robinmaisch Mar 23, 2024
2e1e333
Improve documentation and consistency of type parameter naming
robinmaisch Mar 26, 2024
50b83ea
Revert changes to base code
robinmaisch Apr 2, 2024
1acd991
Revert changes to base code – No.2
robinmaisch Apr 2, 2024
7946823
Add support for Java-CPG module in report viewer
robinmaisch Apr 2, 2024
60427fd
Fix missing comma
robinmaisch Apr 3, 2024
35342f4
feat: added local usage example
LundiNord Sep 30, 2025
79bca8b
feat: some tests
LundiNord Oct 1, 2025
c361278
feat: some tests
LundiNord Oct 15, 2025
49b2eb9
fix: output file type
LundiNord Oct 15, 2025
a93327d
feat: cpg version 8.2.0
LundiNord Oct 17, 2025
4cdbd07
feat: cpg version 8.3.0
LundiNord Oct 17, 2025
310bb1c
feat: some tests
LundiNord Nov 10, 2025
d834113
feat: added more test data
LundiNord Nov 11, 2025
d704338
feat: added experimental uncompleted graph walker
LundiNord Nov 11, 2025
023b376
feat: EOG/DFG seems to not work
LundiNord Nov 11, 2025
517c77c
feat: new simple test file
LundiNord Nov 11, 2025
923a887
feat: experimental uncompleted graph walk for the main method
LundiNord Nov 12, 2025
ecab255
feat: experimental uncompleted graph walk for the main method v0.2 an…
LundiNord Nov 12, 2025
02b3184
feat: experimental uncompleted graph walk for the main method v0.3
LundiNord Nov 13, 2025
5ff05ba
feat: refactored to a new stack-based approach and change to ai as pa…
LundiNord Nov 13, 2025
6d1ecd8
feat: if somewhat working
LundiNord Nov 13, 2025
077b509
feat: copy and merge for branches
LundiNord Nov 14, 2025
e388820
wip
LundiNord Nov 15, 2025
e04bb8a
fix: restored test data
LundiNord Nov 15, 2025
bc8ee9d
feat: first version of support for classes
LundiNord Nov 15, 2025
ae88864
wip
LundiNord Nov 15, 2025
1052404
feat: new Variable name system
LundiNord Nov 16, 2025
70f1e5c
feat: unfinished while
LundiNord Nov 16, 2025
d83df5e
chore: added two tests
LundiNord Nov 16, 2025
42a7bcd
chore: added more tests
LundiNord Nov 16, 2025
9a66235
fix: testNewClass test now works non-deterministically
LundiNord Nov 17, 2025
b85b7d9
fix: test simple2 now works
LundiNord Nov 17, 2025
2cfebc0
feat: initial, simple loops implemented
LundiNord Nov 18, 2025
c737191
feat: test 3 now works with array and conditional disabled
LundiNord Nov 19, 2025
e8b0b39
fix: maven javadoc build problem
LundiNord Nov 19, 2025
9b833bc
fix: if with only one path taken
LundiNord Nov 19, 2025
644676a
feat: added exceptions support
LundiNord Nov 20, 2025
6552b78
fix: enum test (without direct initialization)
LundiNord Nov 20, 2025
1df9b8a
feat: new Class in Method Declaration
LundiNord Nov 20, 2025
e861870
chore: more tests
LundiNord Nov 20, 2025
bd00669
wip
LundiNord Nov 21, 2025
0ca51c1
wip
LundiNord Nov 22, 2025
225bffc
feat: try/catch should now work
LundiNord Nov 23, 2025
4962128
wip
LundiNord Nov 23, 2025
f67e181
feat: added switch support
LundiNord Nov 24, 2025
bd54fed
fix: remove argument nodes from the stack on a new call
LundiNord Nov 24, 2025
e096669
fix: added for each loop support
LundiNord Nov 24, 2025
2d4fe3b
fix: minor bugs
LundiNord Nov 25, 2025
bb1c00a
wip: streams
LundiNord Nov 25, 2025
f8c6906
chore: queens farming test does not crash any more
LundiNord Nov 25, 2025
691eb46
chore: added some documentation
LundiNord Nov 25, 2025
759e598
chore: refactored deprecated methods
LundiNord Nov 25, 2025
0de8567
chore: added second complex test
LundiNord Nov 26, 2025
661c471
feat: added interval int values v0.1
LundiNord Nov 26, 2025
9b3023e
fix: int interval related bugs
LundiNord Nov 27, 2025
22ea32c
wip
LundiNord Nov 28, 2025
5e25a8f
feat: unused var are not changed ti unknown in loops
LundiNord Nov 30, 2025
4438440
feat: added set of interval integer representation
LundiNord Dec 1, 2025
0cf7d8c
fix: fixed if with else-if branch
LundiNord Dec 3, 2025
8ce1812
chore: finished interval set test
LundiNord Dec 3, 2025
86f543d
chore: added test with multiple sets of intervals
LundiNord Dec 3, 2025
994f948
fix: test and fix for conditions with || and &&
LundiNord Dec 3, 2025
65490a6
fix: lambdas and streams
LundiNord Dec 3, 2025
918ce26
chore: refactored integer interval
LundiNord Dec 3, 2025
8ea33de
feat: array assign now works
LundiNord Dec 4, 2025
f95520f
feat: added double set interval value
LundiNord Dec 4, 2025
430089d
fix: refactored more setupClass code
LundiNord Dec 5, 2025
640db6b
fix: few bug fixes
LundiNord Dec 5, 2025
8012b7d
wip: dead code cutout for TokenizationPass.kt
LundiNord Dec 7, 2025
bd7018e
chore: groundwork for String character inclusion value
LundiNord Dec 8, 2025
e5b63ce
feat: character inclusion string values
LundiNord Dec 8, 2025
c2de017
feat: character regex string values
LundiNord Dec 10, 2025
66a591d
chore: refactored regex strings
LundiNord Dec 11, 2025
7753065
feat: added char values and reworked value factories to make more pre…
LundiNord Dec 12, 2025
72e1a11
fix: complex string program
LundiNord Dec 12, 2025
cf1f633
chore: added data for second complex test
LundiNord Dec 12, 2025
de9fdf0
chore: second complex test runs
LundiNord Dec 14, 2025
5ca291c
feat: added graph cutout for if
LundiNord Dec 14, 2025
7688b80
feat: added graph cutout for for/while
LundiNord Dec 14, 2025
2880842
chore: added missing interfaces for values
LundiNord Dec 15, 2025
f9d8ca9
chore: added progpedia test data
LundiNord Dec 15, 2025
c82f655
fix: assign in while condition
LundiNord Dec 15, 2025
4fa7956
fix: small fixes
LundiNord Dec 15, 2025
70720a7
fix: fixes for arrays inner types
LundiNord Dec 15, 2025
d41fa66
fix: null object handling
LundiNord Dec 16, 2025
70ce692
feat: now supports multiple declarations in one line
LundiNord Dec 16, 2025
4728d27
fix: for without { }
LundiNord Dec 16, 2025
308c8b0
feat: added support for return in loop/if
LundiNord Dec 19, 2025
bee9b1c
fix: bugs in if merge
LundiNord Dec 19, 2025
c1dcfd6
fix: lastVisitedLoopOrIf now method local
LundiNord Dec 22, 2025
95d151b
fix: bug in nested if/while/for in code without { }
LundiNord Dec 22, 2025
3bbc351
fix: small fixes
LundiNord Dec 22, 2025
752525d
fix: small fixes
LundiNord Dec 22, 2025
0a2ba87
fix: no dead code cutout while recording changes
LundiNord Dec 22, 2025
79b4d13
fix: small bugfixes
LundiNord Dec 22, 2025
fee0622
fix: small bugfixes
LundiNord Dec 22, 2025
4ebd8a7
chore: moooore JavaDoc
LundiNord Dec 23, 2025
f2c1a88
chore: removed debug prints
LundiNord Dec 23, 2025
f6d899e
Merge remote-tracking branch 'origin/main' into dev
LundiNord Dec 23, 2025
e12ad38
chore: merged with current jplag repo and mvn spotless:apply
LundiNord Dec 23, 2025
ed2638b
fix: merge errors
LundiNord Dec 23, 2025
59d1e54
chore: now using interfaces everywhere + java length array added
LundiNord Dec 24, 2025
e066c7b
Merge branch 'main' into dev
LundiNord Dec 24, 2025
7685f85
Merge pull request #1 from LundiNord/dev
LundiNord Dec 24, 2025
75626ab
fix: bug fixes
LundiNord Dec 27, 2025
e897d77
fix: error with multiple same named methods
LundiNord Dec 27, 2025
882c20a
fix: relaxed assert and added MemberExpression as Field init
LundiNord Dec 27, 2025
8ab4b4a
fix: smaller bug fixes
LundiNord Dec 28, 2025
ef15dcb
fix: smaller bug fixes
LundiNord Dec 28, 2025
d657e50
fix: smaller bug fixes
LundiNord Dec 28, 2025
0daaa7f
fix: bug with array creation with multiple dimensions
LundiNord Dec 29, 2025
ad3ce44
fix: small bug fixes
LundiNord Dec 30, 2025
70a0971
fix: small bug fixes
LundiNord Dec 31, 2025
927fea8
fix: small bug fixes
LundiNord Jan 2, 2026
902ef8c
fix: small bug fixes and values in object can now be null
LundiNord Jan 2, 2026
ca64727
fix: small bug fixes
LundiNord Jan 2, 2026
33a8763
fix: small bug fixes
LundiNord Jan 3, 2026
de7569a
feat: added visited lines recorder
LundiNord Jan 4, 2026
0e08612
feat: added detection of dead classes/methods
LundiNord Jan 4, 2026
5fe88cf
feat: added removal of dead classes/methods
LundiNord Jan 6, 2026
856dcb7
chore: cleanup and comments
LundiNord Jan 6, 2026
2cf2d68
chore: added test for visited line recorder
LundiNord Jan 6, 2026
1d0b0b1
chore: added test for AiPass
LundiNord Jan 7, 2026
247b627
chore: added more test for AiPass
LundiNord Jan 8, 2026
4e08d42
chore: added even more test for AiPass
LundiNord Jan 8, 2026
41b4515
feat: prep work for Evaluation Engine
LundiNord Jan 8, 2026
0cca8a8
fix: in the DFGSOrtPass, parent Info was sometimes missing.
LundiNord Jan 8, 2026
07ad811
feat: dead code evaluation part
LundiNord Jan 9, 2026
bfad6de
feat: some plag evaluation
LundiNord Jan 9, 2026
9a2d497
chore: more ai generated evaluation data
LundiNord Jan 9, 2026
a9a7197
chore: more ai generated evaluation data
LundiNord Jan 10, 2026
3ce488e
chore: more ai generated evaluation data
LundiNord Jan 11, 2026
1a0d0e8
fix: small fixes
LundiNord Jan 12, 2026
995df24
chore: refactored AbstractInterpretation.java to simplify switch stat…
LundiNord Jan 12, 2026
9d088d4
fix: more small fixes
LundiNord Jan 13, 2026
98ff36f
feat: better evaluation engine and small bug fixes
LundiNord Jan 13, 2026
976a9b8
Merge branch 'develop' into main
robinmaisch Jan 14, 2026
0c9953b
chore: cleanup for main push part 1
LundiNord Jan 14, 2026
3ed7666
chore: cleanup for main push part 2
LundiNord Jan 15, 2026
f698a84
Merge pull request #2 from LundiNord/dev
LundiNord Jan 15, 2026
be24ef1
chore: removed progpedia data for main
LundiNord Jan 15, 2026
eef5c17
fix: maven build, temporarily disabled some tests
LundiNord Jan 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ target/
.project
.settings/
.classpath
.factorypath
website/node_modules

*.class

Expand Down
5 changes: 5 additions & 0 deletions cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@
<groupId>de.jplag</groupId>
<artifactId>java</artifactId>
</dependency>
<dependency>
<groupId>de.jplag</groupId>
<artifactId>java-cpg</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>de.jplag</groupId>
<artifactId>python-3</artifactId>
Expand Down
83 changes: 36 additions & 47 deletions core/src/main/java/de/jplag/Submission.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
package de.jplag;

import static de.jplag.SubmissionState.CANNOT_PARSE;
import static de.jplag.SubmissionState.NOTHING_TO_PARSE;
import static de.jplag.SubmissionState.TOO_SMALL;
import static de.jplag.SubmissionState.UNPARSED;
import static de.jplag.SubmissionState.VALID;
import static de.jplag.SubmissionState.*;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.*;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -71,11 +58,24 @@ public Submission(String name, File submissionRootFile, boolean isNew, Collectio
state = UNPARSED;
}

private static File createErrorDirectory(String... subdirectoryNames) {
File subdirectory = Path.of(JPlagOptions.ERROR_FOLDER, subdirectoryNames).toFile();
if (!subdirectory.exists()) {
subdirectory.mkdirs();
}
return subdirectory;
}

@Override
public int compareTo(Submission other) {
return name.compareTo(other.name);
}

@Override
public int hashCode() {
return Objects.hash(name);
}

@Override
public boolean equals(Object obj) {
if (obj == this) {
Expand All @@ -88,8 +88,8 @@ public boolean equals(Object obj) {
}

@Override
public int hashCode() {
return Objects.hash(name);
public String toString() {
return name;
}

/**
Expand All @@ -100,6 +100,14 @@ public JPlagComparison getBaseCodeComparison() {
return baseCodeComparison;
}

/**
* Sets the base code comparison.
* @param baseCodeComparison is submissions matches with the base code.
*/
public void setBaseCodeComparison(JPlagComparison baseCodeComparison) {
this.baseCodeComparison = baseCodeComparison;
}

/**
* Provided all source code files.
* @return a collection of files this submission consists of.
Expand Down Expand Up @@ -153,6 +161,14 @@ public List<Token> getTokenList() {
return tokenList;
}

/**
* Sets the tokens that have been parsed from the files this submission consists of.
* @param tokenList is the list of these tokens.
*/
public void setTokenList(List<Token> tokenList) {
this.tokenList = Collections.unmodifiableList(new ArrayList<>(tokenList));
}

/**
* @return true if a comparison between the submission and the base code is available. Does not imply if there are
* matches to the base code.
Expand Down Expand Up @@ -185,22 +201,6 @@ public boolean isNew() {
return isNew;
}

/**
* Sets the base code comparison.
* @param baseCodeComparison is submissions matches with the base code.
*/
public void setBaseCodeComparison(JPlagComparison baseCodeComparison) {
this.baseCodeComparison = baseCodeComparison;
}

/**
* Sets the tokens that have been parsed from the files this submission consists of.
* @param tokenList is the list of these tokens.
*/
public void setTokenList(List<Token> tokenList) {
this.tokenList = Collections.unmodifiableList(new ArrayList<>(tokenList));
}

/**
* String representation of the code files contained in this submission, annotated with all tokens.
* @return the annotated code as string.
Expand All @@ -209,11 +209,6 @@ public String getTokenAnnotatedSourceCode() {
return TokenPrinter.printTokens(tokenList, submissionRootFile);
}

@Override
public String toString() {
return name;
}

/**
* This method is used to copy files that can not be parsed to a special folder.
*/
Expand All @@ -229,14 +224,6 @@ private void copySubmission() {
}
}

private static File createErrorDirectory(String... subdirectoryNames) {
File subdirectory = Path.of(JPlagOptions.ERROR_FOLDER, subdirectoryNames).toFile();
if (!subdirectory.exists()) {
subdirectory.mkdirs();
}
return subdirectory;
}

/**
* Parse files of the submission.
* @param debugParser specifies if the submission should be copied upon parsing errors.
Expand Down Expand Up @@ -348,7 +335,9 @@ public Map<File, Integer> getTokenCountPerFile() {
fileTokenCount.put(file, 0);
}
for (Token token : this.tokenList) {
fileTokenCount.put(token.getFile(), fileTokenCount.get(token.getFile()) + 1);
File tokenfile = token.getFile();
fileTokenCount.computeIfAbsent(tokenfile, k -> 0);
fileTokenCount.put(tokenfile, fileTokenCount.get(tokenfile) + 1);
}
}
return fileTokenCount;
Expand Down
4 changes: 4 additions & 0 deletions coverage-report/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@
<groupId>de.jplag</groupId>
<artifactId>java</artifactId>
</dependency>
<dependency>
<groupId>de.jplag</groupId>
<artifactId>java-cpg</artifactId>
</dependency>
<dependency>
<groupId>de.jplag</groupId>
<artifactId>python-3</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.jdom2.xpath.XPathBuilder;
import org.jdom2.xpath.XPathExpression;
import org.jdom2.xpath.XPathFactory;
import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -50,6 +51,34 @@ class PomVersionTest {
private static final File projectRoot = new File("..");
private static final File projectRootPom = new File(projectRoot, POM_XML_NAME);

private static final List<String> ALLOWED_EXTERNAL_DEPENDENCIES = List.of("de.fraunhofer.aisec:cpg-core", "de.fraunhofer.aisec:cpg-language-java",
"de.fraunhofer.aisec:cpg-analysis", "org.jetbrains.kotlin:kotlin-stdlib-jdk8", "org.jetbrains.kotlin:kotlin-test");

private static final List<String> ALLOWED_EXTERNAL_PLUGINS = List.of("org.jetbrains.kotlin:kotlin-maven-plugin");

static List<File> getAllPomFiles() {
List<File> collector = new ArrayList<>();
getAllPomFiles(projectRoot, collector);
return collector;
}

static List<File> getAllChildPomFiles() {
List<File> poms = getAllPomFiles();
poms.remove(projectRootPom);
return poms;
}

static void getAllPomFiles(File scanDir, List<File> collector) {
for (File file : scanDir.listFiles()) {
if (file.isFile() && file.getName().equals(POM_XML_NAME)) {
collector.add(file);
}
if (file.isDirectory()) {
getAllPomFiles(file, collector);
}
}
}

@ParameterizedTest
@MethodSource("getAllChildPomFiles")
@DisplayName("Ensure all child poms use " + REVISION_REFERENCE + " to reference parent")
Expand Down Expand Up @@ -130,34 +159,31 @@ private List<Element> scanXpath(Document doc, String xpathExpression) {
return expression.evaluate(doc);
}

private void failForVersionTag(Element versionTag) {
private void failForVersionTag(@NotNull Element versionTag) {
Namespace ns = versionTag.getNamespace();
Element definition = versionTag.getParentElement();
String definitionString = "{groupId: " + definition.getChildText("groupId", ns) + ", artifactId:" + definition.getChildText("artifactId", ns)
+ ", version:" + versionTag.getText() + "}";
String groupId = definition.getChildText("groupId", ns);
String artifactId = definition.getChildText("artifactId", ns);
// Handle inherited groupId from parent
if (groupId == null) {
groupId = "de.jplag";
}
String key = groupId + ":" + artifactId;
// Allow external dependencies and plugins
if (ALLOWED_EXTERNAL_DEPENDENCIES.contains(key) || ALLOWED_EXTERNAL_PLUGINS.contains(key)) {
return;
}
// Allow property-based external dependencies
if (groupId.startsWith("${") && (ALLOWED_EXTERNAL_DEPENDENCIES.stream().anyMatch(dep -> dep.endsWith(":" + artifactId))
|| ALLOWED_EXTERNAL_PLUGINS.stream().anyMatch(plugin -> plugin.endsWith(":" + artifactId)))) {
return;
}
// Allow internal JPlag dependencies with ${revision}
if ("de.jplag".equals(groupId) && "${revision}".equals(versionTag.getText())) {
return;
}
String definitionString = "{groupId: " + groupId + ", artifactId:" + artifactId + ", version:" + versionTag.getText() + "}";
Assertions.fail("Invalid version tag found for: " + definitionString);
}

static List<File> getAllPomFiles() {
List<File> collector = new ArrayList<>();
getAllPomFiles(projectRoot, collector);
return collector;
}

static List<File> getAllChildPomFiles() {
List<File> poms = getAllPomFiles();
poms.remove(projectRootPom);
return poms;
}

static void getAllPomFiles(File scanDir, List<File> collector) {
for (File file : scanDir.listFiles()) {
if (file.isFile() && file.getName().equals(POM_XML_NAME)) {
collector.add(file);
}
if (file.isDirectory()) {
getAllPomFiles(file, collector);
}
}
}
}
111 changes: 111 additions & 0 deletions languages/java-cpg/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.jplag</groupId>
<artifactId>languages</artifactId>
<version>${revision}</version>
</parent>

<artifactId>java-cpg</artifactId>

<properties>
<cpg.version>8.3.0</cpg.version>
<cpg.groupId>de.fraunhofer.aisec</cpg.groupId>
<kotlin.version>2.3.0</kotlin.version>
</properties>

<dependencies>

<dependency>
<groupId>${cpg.groupId}</groupId>
<artifactId>cpg-core</artifactId>
<version>${cpg.version}</version>

<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>${cpg.groupId}</groupId>
<artifactId>cpg-language-java</artifactId>
<version>${cpg.version}</version>
</dependency>
<dependency>
<groupId>${cpg.groupId}</groupId>
<artifactId>cpg-analysis</artifactId>
<version>${cpg.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.jplag</groupId>
<artifactId>jplag</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.jplag</groupId>
<artifactId>java</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<configuration>
<jvmTarget>1.8</jvmTarget>
<args>
<arg>-Xcontext-receivers</arg>
</args>
</configuration>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<phase>process-sources</phase>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
</goals>
<phase>test-compile</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<sourcepath>src/main/java</sourcepath>
<sourceFileIncludes>
<include>**/*.java</include>
</sourceFileIncludes>
<additionalOptions>
<additionalOption>-Xdoclint:none</additionalOption>
</additionalOptions>
<failOnError>false</failOnError>
</configuration>
</plugin>
</plugins>
</build>

</project>
Loading