diff --git a/cli/src/main/java/de/jplag/cli/CLI.java b/cli/src/main/java/de/jplag/cli/CLI.java index 9d73729b51..ae6bcb35d5 100644 --- a/cli/src/main/java/de/jplag/cli/CLI.java +++ b/cli/src/main/java/de/jplag/cli/CLI.java @@ -178,9 +178,8 @@ private String getResultFileBaseName() { private String getOffsetFileName(int offset) { if (offset <= 0) { return getResultFilePath(); - } else { - return getResultFileBaseName() + "(" + offset + ")" + DEFAULT_FILE_ENDING; } + return getResultFileBaseName() + "(" + offset + ")" + DEFAULT_FILE_ENDING; } private String getWritableFileName() throws CliException { diff --git a/cli/src/main/java/de/jplag/cli/logger/CliProgressBarProvider.java b/cli/src/main/java/de/jplag/cli/logger/CliProgressBarProvider.java index db514aabac..d0f712f6cc 100644 --- a/cli/src/main/java/de/jplag/cli/logger/CliProgressBarProvider.java +++ b/cli/src/main/java/de/jplag/cli/logger/CliProgressBarProvider.java @@ -19,17 +19,16 @@ public class CliProgressBarProvider implements ProgressBarProvider { @Override public ProgressBar initProgressBar(ProgressBarType type, int totalSteps) { - if (allowedLogLevels.contains(CollectedLogger.getLogLevel())) { - if (type.isIdleBar()) { - IdleBar idleBar = new IdleBar(type.getDefaultText()); - idleBar.start(); - return idleBar; - } - me.tongfei.progressbar.ProgressBar progressBar = new ProgressBarBuilder().setTaskName(type.getDefaultText()).setInitialMax(totalSteps) - .setStyle(ProgressBarStyle.ASCII).build(); - return new TongfeiProgressBar(progressBar); - } else { + if (!allowedLogLevels.contains(CollectedLogger.getLogLevel())) { return new VoidProgressBar(); } + if (type.isIdleBar()) { + IdleBar idleBar = new IdleBar(type.getDefaultText()); + idleBar.start(); + return idleBar; + } + me.tongfei.progressbar.ProgressBar progressBar = new ProgressBarBuilder().setTaskName(type.getDefaultText()).setInitialMax(totalSteps) + .setStyle(ProgressBarStyle.ASCII).build(); + return new TongfeiProgressBar(progressBar); } } diff --git a/cli/src/main/java/de/jplag/cli/picocli/CliInputHandler.java b/cli/src/main/java/de/jplag/cli/picocli/CliInputHandler.java index 6a43809026..a26439f6b4 100644 --- a/cli/src/main/java/de/jplag/cli/picocli/CliInputHandler.java +++ b/cli/src/main/java/de/jplag/cli/picocli/CliInputHandler.java @@ -111,7 +111,7 @@ public boolean parse() throws CliException { try { this.parseResult = this.commandLine.parseArgs(args); if (this.parseResult.isUsageHelpRequested() - || (this.parseResult.subcommand() != null && this.parseResult.subcommand().isUsageHelpRequested())) { + || this.parseResult.subcommand() != null && this.parseResult.subcommand().isUsageHelpRequested()) { commandLine.getExecutionStrategy().execute(this.parseResult); return true; } diff --git a/cli/src/main/java/de/jplag/cli/picocli/ParameterLabelRenderer.java b/cli/src/main/java/de/jplag/cli/picocli/ParameterLabelRenderer.java index 749d92d777..d810c32b7e 100644 --- a/cli/src/main/java/de/jplag/cli/picocli/ParameterLabelRenderer.java +++ b/cli/src/main/java/de/jplag/cli/picocli/ParameterLabelRenderer.java @@ -30,7 +30,7 @@ public CommandLine.Help.Ansi.Text renderParameterLabel(CommandLine.Model.ArgSpec List styles) { if (argSpec.type().isEnum()) { Object[] enumConstants = argSpec.type().getEnumConstants(); - String enumValueNames = Arrays.stream(enumConstants).map(enumConstant -> (Enum.class.cast(enumConstant)).name()) + String enumValueNames = Arrays.stream(enumConstants).map(enumConstant -> Enum.class.cast(enumConstant).name()) .collect(Collectors.joining(VALUE_SEPARATOR)); return CommandLine.Help.Ansi.AUTO.text(String.format(PARAM_LABEL_PATTERN, enumValueNames)); } diff --git a/cli/src/test/java/de/jplag/cli/MinTokenMatchTest.java b/cli/src/test/java/de/jplag/cli/MinTokenMatchTest.java index 0601e9988c..4b09990cdd 100644 --- a/cli/src/test/java/de/jplag/cli/MinTokenMatchTest.java +++ b/cli/src/test/java/de/jplag/cli/MinTokenMatchTest.java @@ -33,7 +33,7 @@ void testInvalidInput() { @Test void testUpperBound() { - String higherThanMax = String.valueOf(((long) Integer.MAX_VALUE) + 1); + String higherThanMax = String.valueOf((long) Integer.MAX_VALUE + 1); Assertions.assertThrowsExactly(CliException.class, () -> { runCli(options -> options.withInvalid(CliArgument.MIN_TOKEN_MATCH, higherThanMax)); diff --git a/cli/src/test/java/de/jplag/cli/logger/IdleBarTest.java b/cli/src/test/java/de/jplag/cli/logger/IdleBarTest.java index 88bf382db6..5616658174 100644 --- a/cli/src/test/java/de/jplag/cli/logger/IdleBarTest.java +++ b/cli/src/test/java/de/jplag/cli/logger/IdleBarTest.java @@ -64,7 +64,7 @@ private void checkIdleBarOutput(String output, int frameIndex, int numberOfSpace String[] timeParts = time.split(":"); int seconds = Integer.parseInt(timeParts[0]) * 60 * 60 + Integer.parseInt(timeParts[1]) * 60 + Integer.parseInt(timeParts[2]); - int expectedTime = (int) ((IDLE_BAR_ANIMATION_DELAY * frameIndex) / 1000); + int expectedTime = (int) (IDLE_BAR_ANIMATION_DELAY * frameIndex / 1000); Assertions.assertTrue(Math.abs(seconds - expectedTime) < 1, "Frame time of by more than one second"); } } \ No newline at end of file diff --git a/cli/src/test/java/de/jplag/cli/test/CliArgumentBuilder.java b/cli/src/test/java/de/jplag/cli/test/CliArgumentBuilder.java index d1a45bc801..b393c7baf2 100644 --- a/cli/src/test/java/de/jplag/cli/test/CliArgumentBuilder.java +++ b/cli/src/test/java/de/jplag/cli/test/CliArgumentBuilder.java @@ -70,12 +70,11 @@ private String[] formatArgNameAndValue(String name, Object value) { } else { return new String[] {SHORT_OPTION_PREFIX + name, valueText}; } + } + if (valueText.isEmpty()) { + return new String[] {LONG_OPTION_PREFIX + name}; } else { - if (valueText.isEmpty()) { - return new String[] {LONG_OPTION_PREFIX + name}; - } else { - return new String[] {LONG_OPTION_PREFIX + name + "=" + formatArgValue(value)}; - } + return new String[] {LONG_OPTION_PREFIX + name + "=" + formatArgValue(value)}; } } diff --git a/cli/src/test/java/de/jplag/cli/test/CliTest.java b/cli/src/test/java/de/jplag/cli/test/CliTest.java index 5f21da73b7..fc8d6b9a45 100644 --- a/cli/src/test/java/de/jplag/cli/test/CliTest.java +++ b/cli/src/test/java/de/jplag/cli/test/CliTest.java @@ -9,12 +9,16 @@ import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeEach; +import org.mockito.ArgumentMatchers; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.slf4j.event.Level; import de.jplag.JPlagResult; -import de.jplag.cli.*; +import de.jplag.cli.CLI; +import de.jplag.cli.JPlagOptionsBuilder; +import de.jplag.cli.JPlagRunner; +import de.jplag.cli.OutputFileGenerator; import de.jplag.cli.logger.CollectedLogger; import de.jplag.cli.picocli.CliInputHandler; import de.jplag.exceptions.ExitException; @@ -140,8 +144,9 @@ protected Level runCliForLogLevel(Consumer additionalOptions protected CliResult runCli(Consumer additionalOptionsBuilder) throws ExitException, IOException { try (MockedStatic runnerMock = Mockito.mockStatic(JPlagRunner.class); MockedStatic generatorMock = Mockito.mockStatic(OutputFileGenerator.class)) { - runnerMock.when(() -> JPlagRunner.runJPlag(Mockito.any())).thenReturn(new JPlagResult(Collections.emptyList(), null, 1, null)); - generatorMock.when(() -> OutputFileGenerator.generateJPlagResultZip(Mockito.any(), Mockito.any())).then(invocationOnMock -> null); + runnerMock.when(() -> JPlagRunner.runJPlag(ArgumentMatchers.any())).thenReturn(new JPlagResult(Collections.emptyList(), null, 1, null)); + generatorMock.when(() -> OutputFileGenerator.generateJPlagResultZip(ArgumentMatchers.any(), ArgumentMatchers.any())) + .then(invocationOnMock -> null); CliArgumentBuilder copy = this.defaultArgumentBuilder.copy(); additionalOptionsBuilder.accept(copy); diff --git a/core/src/main/java/de/jplag/GreedyStringTiling.java b/core/src/main/java/de/jplag/GreedyStringTiling.java index f10ccdf47a..1cd37c8a4c 100644 --- a/core/src/main/java/de/jplag/GreedyStringTiling.java +++ b/core/src/main/java/de/jplag/GreedyStringTiling.java @@ -212,14 +212,14 @@ private boolean[] calculateInitiallyMarked(Submission submission) { List tokens = submission.getTokenList(); boolean[] result = new boolean[tokens.size()]; for (int i = 0; i < result.length; i++) { - result[i] = tokens.get(i).getType().isExcludedFromMatching() || (baseCodeTokens != null && baseCodeTokens.contains(tokens.get(i))); + result[i] = tokens.get(i).getType().isExcludedFromMatching() || baseCodeTokens != null && baseCodeTokens.contains(tokens.get(i)); } return result; } private SubsequenceHashLookupTable subsequenceHashLookupTableForSubmission(Submission submission, boolean[] marked) { return cachedHashLookupTables.computeIfAbsent(submission, - (key -> new SubsequenceHashLookupTable(minimumMatchLength, tokenValueListFromSubmission(key), marked))); + key -> new SubsequenceHashLookupTable(minimumMatchLength, tokenValueListFromSubmission(key), marked)); } /** @@ -227,7 +227,7 @@ private SubsequenceHashLookupTable subsequenceHashLookupTableForSubmission(Submi * @param submission The submission from which to convert the tokens. */ private int[] tokenValueListFromSubmission(Submission submission) { - return cachedTokenValueLists.computeIfAbsent(submission, (key -> { + return cachedTokenValueLists.computeIfAbsent(submission, key -> { List tokens = key.getTokenList(); int[] tokenValueList = new int[tokens.size()]; for (int i = 0; i < tokens.size(); i++) { @@ -238,7 +238,7 @@ private int[] tokenValueListFromSubmission(Submission submission) { tokenValueList[i] = tokenTypeValues.get(type); } return tokenValueList; - })); + }); } private boolean checkMark(boolean[] marks, int index, Submission submission, Submission otherSubmission) { diff --git a/core/src/main/java/de/jplag/JPlagComparison.java b/core/src/main/java/de/jplag/JPlagComparison.java index 37aa0c7ad3..ed063eadd3 100644 --- a/core/src/main/java/de/jplag/JPlagComparison.java +++ b/core/src/main/java/de/jplag/JPlagComparison.java @@ -76,6 +76,6 @@ public String toString() { } private double similarity(int divisor) { - return (divisor == 0 ? 0.0 : (getNumberOfMatchedTokens() / (double) divisor)); + return divisor == 0 ? 0.0 : getNumberOfMatchedTokens() / (double) divisor; } } diff --git a/core/src/main/java/de/jplag/JPlagResult.java b/core/src/main/java/de/jplag/JPlagResult.java index 0ebff602be..2958477e61 100644 --- a/core/src/main/java/de/jplag/JPlagResult.java +++ b/core/src/main/java/de/jplag/JPlagResult.java @@ -116,7 +116,7 @@ public int[] getSimilarityDistribution() { * the same distribution as {@link JPlagResult#getSimilarityDistribution()} */ public int[] getMaxSimilarityDistribution() { - return calculateDistributionFor(comparisons, (JPlagComparison::maximalSimilarity)); + return calculateDistributionFor(comparisons, JPlagComparison::maximalSimilarity); } public List> getClusteringResult() { diff --git a/core/src/main/java/de/jplag/Match.java b/core/src/main/java/de/jplag/Match.java index 1e94315a77..7851cde1ee 100644 --- a/core/src/main/java/de/jplag/Match.java +++ b/core/src/main/java/de/jplag/Match.java @@ -13,17 +13,17 @@ public record Match(int startOfFirst, int startOfSecond, int length) { */ public boolean overlaps(Match other) { if (startOfFirst < other.startOfFirst) { - if ((other.startOfFirst - startOfFirst) < length) { + if (other.startOfFirst - startOfFirst < length) { return true; } - } else if ((startOfFirst - other.startOfFirst) < other.length) { + } else if (startOfFirst - other.startOfFirst < other.length) { return true; } if (startOfSecond < other.startOfSecond) { - return (other.startOfSecond - startOfSecond) < length; + return other.startOfSecond - startOfSecond < length; } - return (startOfSecond - other.startOfSecond) < other.length; + return startOfSecond - other.startOfSecond < other.length; } /** diff --git a/core/src/main/java/de/jplag/SubmissionSet.java b/core/src/main/java/de/jplag/SubmissionSet.java index 884d800450..7b7457e2ea 100644 --- a/core/src/main/java/de/jplag/SubmissionSet.java +++ b/core/src/main/java/de/jplag/SubmissionSet.java @@ -172,7 +172,7 @@ private void parseSubmissions(List submissions) throws LanguageExcep int validSubmissions = submissions.size() - errors; logger.debug("{} submissions parsed successfully!", validSubmissions); - logger.debug("{} parser error{}!", errors, (errors != 1 ? "s" : "")); + logger.debug("{} parser error{}!", errors, errors != 1 ? "s" : ""); } } diff --git a/core/src/main/java/de/jplag/SubmissionSetBuilder.java b/core/src/main/java/de/jplag/SubmissionSetBuilder.java index c74252fba8..3de88eb8e0 100644 --- a/core/src/main/java/de/jplag/SubmissionSetBuilder.java +++ b/core/src/main/java/de/jplag/SubmissionSetBuilder.java @@ -70,7 +70,7 @@ public SubmissionSet buildSubmissionSet() throws ExitException { // For backward compatibility, don't prefix submission names with their root directory // if there is only one root directory. int numberOfRootDirectories = submissionDirectories.size() + oldSubmissionDirectories.size(); - boolean multipleRoots = (numberOfRootDirectories > 1); + boolean multipleRoots = numberOfRootDirectories > 1; List submissionFiles = new ArrayList<>(); for (File submissionDirectory : submissionDirectories) { @@ -225,7 +225,7 @@ private void processSubmissionFile(SubmissionFileData file, boolean multipleRoot } else if (file.submissionFile().isFile() && !hasValidSuffix(file.submissionFile())) { logger.error("Ignore submission with invalid suffix: {}", file.submissionFile().getName()); } else { - String rootDirectoryPrefix = multipleRoots ? (file.root().getName() + File.separator) : ""; + String rootDirectoryPrefix = multipleRoots ? file.root().getName() + File.separator : ""; String submissionName = rootDirectoryPrefix + file.submissionFile().getName(); Submission submission = processSubmission(submissionName, file.submissionFile(), file.isNew()); foundSubmissions.put(submission.getRoot(), submission); diff --git a/core/src/main/java/de/jplag/SubsequenceHashLookupTable.java b/core/src/main/java/de/jplag/SubsequenceHashLookupTable.java index 249ee7aeda..de28822c80 100644 --- a/core/src/main/java/de/jplag/SubsequenceHashLookupTable.java +++ b/core/src/main/java/de/jplag/SubsequenceHashLookupTable.java @@ -74,7 +74,7 @@ List startIndexesOfPossiblyMatchingSubsequencesForSubsequenceHash(int s private void computeSubsequenceHashes(boolean[] marked) { int hash = 0; int hashedLength = 0; - int factor = (windowSize != 1 ? (2 << (windowSize - 2)) : 1); + int factor = windowSize != 1 ? 2 << windowSize - 2 : 1; for (int windowEndIndex = 0; windowEndIndex < values.length; windowEndIndex++) { int windowStartIndex = windowEndIndex - windowSize; @@ -87,7 +87,7 @@ private void computeSubsequenceHashes(boolean[] marked) { } hash -= factor * hashValueForValue(values[windowStartIndex]); } - hash = (2 * hash) + hashValueForValue(values[windowEndIndex]); + hash = 2 * hash + hashValueForValue(values[windowEndIndex]); if (marked[windowEndIndex]) { hashedLength = 0; } else { diff --git a/core/src/main/java/de/jplag/clustering/Cluster.java b/core/src/main/java/de/jplag/clustering/Cluster.java index 2d1a13465a..5b01e09552 100644 --- a/core/src/main/java/de/jplag/clustering/Cluster.java +++ b/core/src/main/java/de/jplag/clustering/Cluster.java @@ -119,7 +119,7 @@ private double averageSimilarity(BiFunction similarity) { private int connections() { int size = members.size(); - return ((size - 1) * size) / 2; + return (size - 1) * size / 2; } /** diff --git a/core/src/main/java/de/jplag/clustering/ClusteringResult.java b/core/src/main/java/de/jplag/clustering/ClusteringResult.java index 7e8432a981..2cc3e832cb 100644 --- a/core/src/main/java/de/jplag/clustering/ClusteringResult.java +++ b/core/src/main/java/de/jplag/clustering/ClusteringResult.java @@ -113,7 +113,7 @@ private static double calculateAverageSimilarityFor(Collection cluster, } } int nMinusOne = cluster.size() - 1; - double numberOfComparisons = (nMinusOne * (nMinusOne + 1)) / 2.0; + double numberOfComparisons = nMinusOne * (nMinusOne + 1) / 2.0; /* * Use Gauss sum to calculate number of comparisons in cluster: Given cluster of size n we need Gauss sum of n-1 * comparisons: compare first element of cluster to all other except itself: n-1 comparisons. compare second element to diff --git a/core/src/main/java/de/jplag/clustering/preprocessors/CumulativeDistributionFunctionPreprocessor.java b/core/src/main/java/de/jplag/clustering/preprocessors/CumulativeDistributionFunctionPreprocessor.java index 8009053acb..34b66aaadc 100644 --- a/core/src/main/java/de/jplag/clustering/preprocessors/CumulativeDistributionFunctionPreprocessor.java +++ b/core/src/main/java/de/jplag/clustering/preprocessors/CumulativeDistributionFunctionPreprocessor.java @@ -20,7 +20,7 @@ public class CumulativeDistributionFunctionPreprocessor implements ClusteringPre @Override public double[][] preprocessSimilarities(double[][] similarityMatrix) { RealMatrix similarity = new Array2DRowRealMatrix(similarityMatrix, true); - int connections = (similarity.getColumnDimension() * (similarity.getColumnDimension() - 1)) / 2; + int connections = similarity.getColumnDimension() * (similarity.getColumnDimension() - 1) / 2; EmpiricalDistribution dist = new EmpiricalDistribution(Math.max(100, connections / 100)); double[] allWeights = new double[connections]; similarity.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() { diff --git a/core/src/main/java/de/jplag/clustering/preprocessors/PercentileThresholdProcessor.java b/core/src/main/java/de/jplag/clustering/preprocessors/PercentileThresholdProcessor.java index 017e823d91..123a1bfae9 100644 --- a/core/src/main/java/de/jplag/clustering/preprocessors/PercentileThresholdProcessor.java +++ b/core/src/main/java/de/jplag/clustering/preprocessors/PercentileThresholdProcessor.java @@ -23,7 +23,7 @@ public PercentileThresholdProcessor(double percentile) { public double[][] preprocessSimilarities(double[][] similarityMatrix) { Array2DRowRealMatrix similarity = new Array2DRowRealMatrix(similarityMatrix, false); Percentile percentileEstimator = new Percentile().withEstimationType(EstimationType.R_2); - int connections = (similarity.getColumnDimension() * (similarity.getColumnDimension() - 1)) / 2; + int connections = similarity.getColumnDimension() * (similarity.getColumnDimension() - 1) / 2; double[] allWeights = new double[connections]; similarity.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() { diff --git a/core/src/main/java/de/jplag/merging/MatchMerging.java b/core/src/main/java/de/jplag/merging/MatchMerging.java index ae9f0156ec..ea2e72f415 100644 --- a/core/src/main/java/de/jplag/merging/MatchMerging.java +++ b/core/src/main/java/de/jplag/merging/MatchMerging.java @@ -81,7 +81,7 @@ private List computeNeighbors(List globalMatches) { sortedByRight.sort(Comparator.comparingInt(Match::startOfSecond)); for (int i = 0; i < sortedByLeft.size() - 1; i++) { - if (sortedByRight.indexOf(sortedByLeft.get(i)) == (sortedByRight.indexOf(sortedByLeft.get(i + 1)) - 1)) { + if (sortedByRight.indexOf(sortedByLeft.get(i)) == sortedByRight.indexOf(sortedByLeft.get(i + 1)) - 1) { neighbors.add(new Neighbor(sortedByLeft.get(i), sortedByLeft.get(i + 1))); } } @@ -159,7 +159,7 @@ private boolean mergeOverlapsFiles(Submission leftSubmission, Submission rightSu * @return true if FILE_END is in token */ private boolean containsFileEndToken(List token) { - return token.stream().map(Token::getType).anyMatch(it -> it.equals(SharedTokenType.FILE_END)); + return token.stream().map(Token::getType).anyMatch(SharedTokenType.FILE_END::equals); } /** diff --git a/core/src/main/java/de/jplag/options/JPlagOptions.java b/core/src/main/java/de/jplag/options/JPlagOptions.java index 2a27e53c6c..5f903c838e 100644 --- a/core/src/main/java/de/jplag/options/JPlagOptions.java +++ b/core/src/main/java/de/jplag/options/JPlagOptions.java @@ -158,7 +158,7 @@ private Integer normalizeMaximumNumberOfComparisons(Integer maximumNumberOfCompa } private Integer normalizeMinimumTokenMatch(Integer minimumTokenMatch) { - return (minimumTokenMatch != null && minimumTokenMatch < 1) ? Integer.valueOf(1) : minimumTokenMatch; + return minimumTokenMatch != null && minimumTokenMatch < 1 ? Integer.valueOf(1) : minimumTokenMatch; } /** diff --git a/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java b/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java index a1520f92bb..f8013ac1b7 100644 --- a/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java +++ b/core/src/main/java/de/jplag/reporting/reportobject/ReportObjectFactory.java @@ -144,7 +144,7 @@ private void writeOverview(JPlagResult result) { int totalComparisons = result.getAllComparisons().size(); int numberOfMaximumComparisons = result.getOptions().maximumNumberOfComparisons(); int shownComparisons = Math.min(totalComparisons, numberOfMaximumComparisons); - int missingComparisons = totalComparisons > numberOfMaximumComparisons ? (totalComparisons - numberOfMaximumComparisons) : 0; + int missingComparisons = totalComparisons > numberOfMaximumComparisons ? totalComparisons - numberOfMaximumComparisons : 0; logger.info("Total Comparisons: {}. Comparisons in Report: {}. Omitted Comparisons: {}.", totalComparisons, shownComparisons, missingComparisons); OverviewReport overviewReport = new OverviewReport(REPORT_VIEWER_VERSION, folders.stream().map(File::getPath).toList(), // submissionFolderPath diff --git a/core/src/main/java/de/jplag/strategy/AbstractComparisonStrategy.java b/core/src/main/java/de/jplag/strategy/AbstractComparisonStrategy.java index 8aca548e10..a51566d7ed 100644 --- a/core/src/main/java/de/jplag/strategy/AbstractComparisonStrategy.java +++ b/core/src/main/java/de/jplag/strategy/AbstractComparisonStrategy.java @@ -65,9 +65,9 @@ protected Optional compareSubmissions(Submission first, Submiss private List buildComparisonTuples(List submissions) { List tuples = new ArrayList<>(); - for (int i = 0; i < (submissions.size() - 1); i++) { + for (int i = 0; i < submissions.size() - 1; i++) { Submission first = submissions.get(i); - for (int j = (i + 1); j < submissions.size(); j++) { + for (int j = i + 1; j < submissions.size(); j++) { Submission second = submissions.get(j); if (first.isNew() || second.isNew()) { tuples.add(new SubmissionTuple(first, second)); diff --git a/core/src/test/java/de/jplag/BasicFunctionalityTest.java b/core/src/test/java/de/jplag/BasicFunctionalityTest.java index e38d531cbc..168f620ec6 100644 --- a/core/src/test/java/de/jplag/BasicFunctionalityTest.java +++ b/core/src/test/java/de/jplag/BasicFunctionalityTest.java @@ -68,7 +68,7 @@ void testPartialPlagiarism() throws ExitException { // All comparisons with E shall have no matches result.getAllComparisons().stream() - .filter(comparison -> comparison.secondSubmission().getName().equals("E") || comparison.firstSubmission().getName().equals("E")) + .filter(comparison -> "E".equals(comparison.secondSubmission().getName()) || "E".equals(comparison.firstSubmission().getName())) .forEach(comparison -> assertEquals(0, comparison.similarity(), DELTA)); // Hard coded assertions on selected comparisons diff --git a/core/src/test/java/de/jplag/InvalidSubmissionTest.java b/core/src/test/java/de/jplag/InvalidSubmissionTest.java index 304017bfdc..582edb6483 100644 --- a/core/src/test/java/de/jplag/InvalidSubmissionTest.java +++ b/core/src/test/java/de/jplag/InvalidSubmissionTest.java @@ -34,8 +34,9 @@ void testInvalidSubmissionsWithDebug() throws ExitException { File errorFolder = new File(Path.of("errors", "java").toString()); assertTrue(errorFolder.exists()); String[] errorSubmissions = errorFolder.list(); - if (errorSubmissions != null) + if (errorSubmissions != null) { Arrays.sort(errorSubmissions); // File systems don't promise alphabetical order. + } deleteDirectory(errorFolder.getParentFile()); assertArrayEquals(new String[] {"A", "B"}, errorSubmissions); } diff --git a/core/src/test/java/de/jplag/merging/MergingTest.java b/core/src/test/java/de/jplag/merging/MergingTest.java index 755d3b1065..ab93247458 100644 --- a/core/src/test/java/de/jplag/merging/MergingTest.java +++ b/core/src/test/java/de/jplag/merging/MergingTest.java @@ -132,13 +132,13 @@ void testFileEnd() { List tokenRight = new ArrayList<>(comparison.secondSubmission().getTokenList()); for (Token token : tokenLeft) { - if (token.getType().equals(SharedTokenType.FILE_END)) { + if (SharedTokenType.FILE_END.equals(token.getType())) { amountFileEndBefore++; } } for (Token token : tokenRight) { - if (token.getType().equals(SharedTokenType.FILE_END)) { + if (SharedTokenType.FILE_END.equals(token.getType())) { amountFileEndBefore++; } } @@ -150,13 +150,13 @@ void testFileEnd() { List tokenRight = new ArrayList<>(comparison.secondSubmission().getTokenList()); for (Token token : tokenLeft) { - if (token.getType().equals(SharedTokenType.FILE_END)) { + if (SharedTokenType.FILE_END.equals(token.getType())) { amountFileEndAfter++; } } for (Token token : tokenRight) { - if (token.getType().equals(SharedTokenType.FILE_END)) { + if (SharedTokenType.FILE_END.equals(token.getType())) { amountFileEndAfter++; } } diff --git a/language-antlr-utils/src/main/java/de/jplag/antlr/TokenCollector.java b/language-antlr-utils/src/main/java/de/jplag/antlr/TokenCollector.java index 436892aff0..4e19977231 100644 --- a/language-antlr-utils/src/main/java/de/jplag/antlr/TokenCollector.java +++ b/language-antlr-utils/src/main/java/de/jplag/antlr/TokenCollector.java @@ -49,7 +49,7 @@ void addToken(TokenType jplagType, Function semanticsSuppl org.antlr.v4.runtime.Token antlrEndToken = extractEndToken.apply(entity); int line = antlrToken.getLine(); int column = antlrToken.getCharPositionInLine() + 1; - int length = (antlrEndToken.getStopIndex() - antlrToken.getStartIndex()) + 1; + int length = antlrEndToken.getStopIndex() - antlrToken.getStartIndex() + 1; Token token; if (extractsSemantics) { if (semanticsSupplier == null) { diff --git a/language-api/src/main/java/de/jplag/semantics/VariableRegistry.java b/language-api/src/main/java/de/jplag/semantics/VariableRegistry.java index b187db34cc..91fdd424e6 100644 --- a/language-api/src/main/java/de/jplag/semantics/VariableRegistry.java +++ b/language-api/src/main/java/de/jplag/semantics/VariableRegistry.java @@ -150,7 +150,7 @@ public void registerVariableAccess(String variableName, boolean isClassVariable) if (nextVariableAccessType.isRead) { semantics.addRead(variable); } - if (nextVariableAccessType.isWrite || (mutableWrite && variable.isMutable())) { + if (nextVariableAccessType.isWrite || mutableWrite && variable.isMutable()) { semantics.addWrite(variable); } } // track global variables here through else diff --git a/language-api/src/main/java/de/jplag/util/FileUtils.java b/language-api/src/main/java/de/jplag/util/FileUtils.java index 693a09ae40..9a63d3056b 100644 --- a/language-api/src/main/java/de/jplag/util/FileUtils.java +++ b/language-api/src/main/java/de/jplag/util/FileUtils.java @@ -89,7 +89,7 @@ private static void removeBom(BufferedReader reader, Charset charset) throws IOE * @throws IOException If an IO error occurs */ public static Charset detectCharset(File file) throws IOException { - try (InputStream stream = new BufferedInputStream(new FileInputStream((file)))) { + try (InputStream stream = new BufferedInputStream(new FileInputStream(file))) { return detectCharset(stream); } } diff --git a/languages/c/src/main/java/de/jplag/c/experimental/GCCSourceAnalysis.java b/languages/c/src/main/java/de/jplag/c/experimental/GCCSourceAnalysis.java index d78aceb7a5..950560fb8b 100644 --- a/languages/c/src/main/java/de/jplag/c/experimental/GCCSourceAnalysis.java +++ b/languages/c/src/main/java/de/jplag/c/experimental/GCCSourceAnalysis.java @@ -45,7 +45,7 @@ public void findUnusedVariableLines(Set files) throws InterruptedException for (File file : files) { try { Runtime runtime = Runtime.getRuntime(); - Process gcc = runtime.exec(COMPILE_COMMAND.formatted(file.getAbsolutePath())); + Process gcc = runtime.exec(new String[] {COMPILE_COMMAND.formatted(file.getAbsolutePath())}); gcc.waitFor(); // gcc prints compiler warnings to the error stream, not the standard stream diff --git a/languages/cpp/src/main/java/de/jplag/cpp/CPPListener.java b/languages/cpp/src/main/java/de/jplag/cpp/CPPListener.java index 9cea3eed7f..7b07fb6726 100644 --- a/languages/cpp/src/main/java/de/jplag/cpp/CPPListener.java +++ b/languages/cpp/src/main/java/de/jplag/cpp/CPPListener.java @@ -203,7 +203,7 @@ private void declarationRules() { visit(DeclaratorContext.class, rule -> { ParserRuleContext parent = rule.getParent(); BraceOrEqualInitializerContext desc = getDescendant(parent, BraceOrEqualInitializerContext.class); - return (desc != null && desc.Assign() != null && (parent == desc.getParent() || parent == desc.getParent().getParent())); + return desc != null && desc.Assign() != null && (parent == desc.getParent() || parent == desc.getParent().getParent()); }).map(ASSIGN).withSemantics(CodeSemantics::new).onEnter((ctx, varReg) -> varReg.setNextVariableAccessType(VariableAccessType.WRITE)); visit(ParameterDeclarationContext.class).map(VARDEF).withSemantics(CodeSemantics::new).onEnter((ctx, varReg) -> { @@ -230,7 +230,7 @@ private void idRules() { ParserRuleContext parentCtx = ctx.getParent().getParent(); if (!parentCtx.getParent().getParent().getText().contains("(")) { boolean isClassVariable = parentCtx.getClass() == PostfixExpressionContext.class // after dot - && ((PostfixExpressionContext) parentCtx).postfixExpression().getText().equals("this"); + && "this".equals(((PostfixExpressionContext) parentCtx).postfixExpression().getText()); varReg.registerVariableAccess(ctx.getText(), isClassVariable); } }); diff --git a/languages/csharp/src/main/java/de/jplag/csharp/CSharpListener.java b/languages/csharp/src/main/java/de/jplag/csharp/CSharpListener.java index 6cc5685057..93bdd784c5 100644 --- a/languages/csharp/src/main/java/de/jplag/csharp/CSharpListener.java +++ b/languages/csharp/src/main/java/de/jplag/csharp/CSharpListener.java @@ -262,6 +262,6 @@ private boolean isConversionOperatorBody(BodyContext context) { private boolean isAliasUsageAlsoImport(UsingAliasDirectiveContext context) { Namespace_or_type_nameContext namespace = getDescendant(context, Namespace_or_type_nameContext.class); - return namespace != null && (!namespace.DOT().isEmpty() && getDescendant(namespace, Type_argument_listContext.class) == null); + return namespace != null && !namespace.DOT().isEmpty() && getDescendant(namespace, Type_argument_listContext.class) == null; } } diff --git a/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpLexerBase.java b/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpLexerBase.java index 36ea84fff0..ed5a5150f5 100644 --- a/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpLexerBase.java +++ b/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpLexerBase.java @@ -73,7 +73,7 @@ protected void openBraceInside() { protected void onDoubleQuoteInside() { interpolatedStringLevel--; interpolatedVerbatiums.pop(); - verbatium = (interpolatedVerbatiums.size() > 0 ? interpolatedVerbatiums.peek() : false); + verbatium = interpolatedVerbatiums.size() > 0 ? interpolatedVerbatiums.peek() : false; } protected void onCloseBraceInside() { diff --git a/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpParserBase.java b/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpParserBase.java index 1b1075754f..87f598ad90 100644 --- a/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpParserBase.java +++ b/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpParserBase.java @@ -24,6 +24,6 @@ protected boolean isLocalVariableDeclaration() { if (localVariableType == null) { return true; } - return !localVariableType.getText().equals("var"); + return !"var".equals(localVariableType.getText()); } } diff --git a/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpPreprocessorParserBase.java b/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpPreprocessorParserBase.java index d7016971c0..b01897d212 100644 --- a/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpPreprocessorParserBase.java +++ b/languages/csharp/src/main/java/de/jplag/csharp/grammar/CSharpPreprocessorParserBase.java @@ -166,24 +166,24 @@ protected void onPreprocessorExpressionConditionalBang() { protected void onPreprocessorExpressionConditionalEq() { ParserRuleContext ruleContext = this._ctx; Preprocessor_expressionContext context = (Preprocessor_expressionContext) ruleContext; - context.value = (Objects.equals(context.expr1.value, context.expr2.value) ? TRUE : FALSE); + context.value = Objects.equals(context.expr1.value, context.expr2.value) ? TRUE : FALSE; } protected void onPreprocessorExpressionConditionalNe() { ParserRuleContext ruleContext = this._ctx; Preprocessor_expressionContext context = (Preprocessor_expressionContext) ruleContext; - context.value = (!Objects.equals(context.expr1.value, context.expr2.value) ? TRUE : FALSE); + context.value = !Objects.equals(context.expr1.value, context.expr2.value) ? TRUE : FALSE; } protected void onPreprocessorExpressionConditionalAnd() { ParserRuleContext ruleContext = this._ctx; Preprocessor_expressionContext context = (Preprocessor_expressionContext) ruleContext; - context.value = (context.expr1.value.equals(TRUE) && context.expr2.value.equals(TRUE) ? TRUE : FALSE); + context.value = context.expr1.value.equals(TRUE) && context.expr2.value.equals(TRUE) ? TRUE : FALSE; } protected void onPreprocessorExpressionConditionalOr() { ParserRuleContext ruleContext = this._ctx; Preprocessor_expressionContext context = (Preprocessor_expressionContext) ruleContext; - context.value = (context.expr1.value.equals(TRUE) || context.expr2.value.equals(TRUE) ? TRUE : FALSE); + context.value = context.expr1.value.equals(TRUE) || context.expr2.value.equals(TRUE) ? TRUE : FALSE; } } diff --git a/languages/emf-metamodel/src/main/java/de/jplag/emf/util/EmfaticModelView.java b/languages/emf-metamodel/src/main/java/de/jplag/emf/util/EmfaticModelView.java index ec2b055dc4..84b5aa8172 100644 --- a/languages/emf-metamodel/src/main/java/de/jplag/emf/util/EmfaticModelView.java +++ b/languages/emf-metamodel/src/main/java/de/jplag/emf/util/EmfaticModelView.java @@ -89,7 +89,7 @@ public MetamodelToken convertToMetadataEnrichedToken(MetamodelToken token) { * Iterates over a model, replacing the names of all named elements by their hashcode. This allows identifying model * elements in subsequently generated Emfatic code while avoiding name collisions. */ - private final void replaceElementNamesWithHashes(Resource copiedResource) { + private void replaceElementNamesWithHashes(Resource copiedResource) { AbstractMetamodelVisitor renamer = new AbstractMetamodelVisitor() { @Override protected void visitENamedElement(ENamedElement eNamedElement) { @@ -103,7 +103,7 @@ protected void visitENamedElement(ENamedElement eNamedElement) { * Generates Emfatic code from a model resource and splits it into lines with a string builder. * @throws ParsingException if the Emfatic writer fails. */ - private final List generateEmfaticCode(StringBuilder builder, Resource modelResource) throws ParsingException { + private List generateEmfaticCode(StringBuilder builder, Resource modelResource) throws ParsingException { Writer writer = new Writer(); try { String code = writer.write(modelResource, null, null); @@ -117,7 +117,7 @@ private final List generateEmfaticCode(StringBuilder builder, Resource m /** * Calculates the index of the root package declaration, as it has unique syntax in Emfatic. */ - private final int findIndexOfRootPackage(List lines) { + private int findIndexOfRootPackage(List lines) { for (int index = 0; index < lines.size(); index++) { if (lines.get(index).matches(PACKAGE_REGEX)) { return index; diff --git a/languages/emf-metamodel/src/main/java/de/jplag/emf/util/GenericEmfTreeView.java b/languages/emf-metamodel/src/main/java/de/jplag/emf/util/GenericEmfTreeView.java index f68e086209..a1a5b3f3f5 100644 --- a/languages/emf-metamodel/src/main/java/de/jplag/emf/util/GenericEmfTreeView.java +++ b/languages/emf-metamodel/src/main/java/de/jplag/emf/util/GenericEmfTreeView.java @@ -115,7 +115,7 @@ private String featureValueToString(Object value) { name = valueListToString(multipleValues); } else { name = value.toString(); - name = (name.length() > ABBREVIATION_LIMIT) ? name.substring(0, ABBREVIATION_LIMIT) + ABBREVIATION_SUFFIX : name; + name = name.length() > ABBREVIATION_LIMIT ? name.substring(0, ABBREVIATION_LIMIT) + ABBREVIATION_SUFFIX : name; name = TEXT_AFFIX + name + TEXT_AFFIX; } } diff --git a/languages/golang/src/main/java/de/jplag/golang/GoListener.java b/languages/golang/src/main/java/de/jplag/golang/GoListener.java index e43de50c4f..a55b430e0d 100644 --- a/languages/golang/src/main/java/de/jplag/golang/GoListener.java +++ b/languages/golang/src/main/java/de/jplag/golang/GoListener.java @@ -184,10 +184,10 @@ private void functionDeclarations() { private void controlFlowRules() { visit(IfStmtContext.class).delegateTerminal(IfStmtContext::IF).map(IF_STATEMENT); - visit(BlockContext.class, context -> context.parent instanceof IfStmtContext ifStmt && context.equals((ifStmt).block(0))).map(IF_BLOCK_BEGIN, + visit(BlockContext.class, context -> context.parent instanceof IfStmtContext ifStmt && context.equals(ifStmt.block(0))).map(IF_BLOCK_BEGIN, IF_BLOCK_END); - visit(BlockContext.class, context -> context.parent instanceof IfStmtContext ifStmt && context.equals((ifStmt).block(1))) - .map(ELSE_BLOCK_BEGIN, ELSE_BLOCK_END); + visit(BlockContext.class, context -> context.parent instanceof IfStmtContext ifStmt && context.equals(ifStmt.block(1))).map(ELSE_BLOCK_BEGIN, + ELSE_BLOCK_END); visit(ForStmtContext.class).map(FOR_STATEMENT); visit(ForStmtContext.class).delegateTerminal(context -> context.block().L_CURLY()).map(FOR_BLOCK_BEGIN); diff --git a/languages/java/src/main/java/de/jplag/java/TokenGeneratingTreeScanner.java b/languages/java/src/main/java/de/jplag/java/TokenGeneratingTreeScanner.java index 503c84fb04..acce1c206a 100644 --- a/languages/java/src/main/java/de/jplag/java/TokenGeneratingTreeScanner.java +++ b/languages/java/src/main/java/de/jplag/java/TokenGeneratingTreeScanner.java @@ -104,7 +104,7 @@ private void addToken(JavaTokenType tokenType, long position, int length, CodeSe * @param end is the end position of the token for the calculation of the length. */ private void addToken(JavaTokenType tokenType, long start, long end, CodeSemantics semantics) { - addToken(tokenType, file, map.getLineNumber(start), map.getColumnNumber(start), (end - start), semantics); + addToken(tokenType, file, map.getLineNumber(start), map.getColumnNumber(start), end - start, semantics); } private boolean isMutable(Tree classTree) { @@ -149,7 +149,7 @@ public Void visitClass(ClassTree node, Void unused) { } else if (node.getKind() == Tree.Kind.ANNOTATION_TYPE) { // The start position for the is calculated that way, because the @ is the final element in the modifier list for // annotations - addToken(JavaTokenType.J_ANNO_T_BEGIN, start - 2, (start - 2) + 11 + nameLength, semantics); + addToken(JavaTokenType.J_ANNO_T_BEGIN, start - 2, start - 2 + 11 + nameLength, semantics); } else if (node.getKind() == Tree.Kind.CLASS) { addToken(JavaTokenType.J_CLASS_BEGIN, start, 5, semantics); } @@ -565,7 +565,7 @@ public Void visitDefaultCaseLabel(DefaultCaseLabelTree node, Void unused) { @Override public Void visitMemberSelect(MemberSelectTree node, Void unused) { - if (node.getExpression().toString().equals("this")) { + if ("this".equals(node.getExpression().toString())) { variableRegistry.registerVariableAccess(node.getIdentifier().toString(), true); } variableRegistry.setIgnoreNextVariableAccess(false); // don't ignore the foo in foo.bar() diff --git a/languages/python-3/src/main/java/de/jplag/python3/grammar/Python3LexerBase.java b/languages/python-3/src/main/java/de/jplag/python3/grammar/Python3LexerBase.java index 5461af9f4c..bc005cb8e2 100644 --- a/languages/python-3/src/main/java/de/jplag/python3/grammar/Python3LexerBase.java +++ b/languages/python-3/src/main/java/de/jplag/python3/grammar/Python3LexerBase.java @@ -88,7 +88,7 @@ static int getIndentationCount(String spaces) { for (char ch : spaces.toCharArray()) { switch (ch) { case '\t': - count += 8 - (count % 8); + count += 8 - count % 8; break; default: // A normal space char. @@ -119,7 +119,7 @@ void onNewLine() { // satisfy the final newline needed by the single_put rule used by the REPL. int next = _input.LA(1); int nextnext = _input.LA(2); - if (opened > 0 || (nextnext != -1 && (next == '\r' || next == '\n' || next == '\f' || next == '#'))) { + if (opened > 0 || nextnext != -1 && (next == '\r' || next == '\n' || next == '\f' || next == '#')) { // If we're inside a list or on a blank line, ignore all indents, // dedents and line breaks. skip(); diff --git a/languages/rlang/src/test/java/de/jplag/rlang/RLanguageTest.java b/languages/rlang/src/test/java/de/jplag/rlang/RLanguageTest.java index 1479a44eac..5d7c5e13e7 100644 --- a/languages/rlang/src/test/java/de/jplag/rlang/RLanguageTest.java +++ b/languages/rlang/src/test/java/de/jplag/rlang/RLanguageTest.java @@ -54,8 +54,9 @@ void parseTestFiles() throws ParsingException { logger.info(output); testSourceCoverage(fileName, tokens); - if (fileName.equals(COMPLETE_TEST_FILE)) + if (COMPLETE_TEST_FILE.equals(fileName)) { testTokenCoverage(tokens, fileName); + } } } diff --git a/languages/rust/src/main/java/de/jplag/rust/JPlagRustListener.java b/languages/rust/src/main/java/de/jplag/rust/JPlagRustListener.java index 594039bb82..63ab40a2d3 100644 --- a/languages/rust/src/main/java/de/jplag/rust/JPlagRustListener.java +++ b/languages/rust/src/main/java/de/jplag/rust/JPlagRustListener.java @@ -153,7 +153,7 @@ public void exitUseTree(RustParser.UseTreeContext context) { @Override public void enterSimplePath(RustParser.SimplePathContext context) { if (state.getCurrentContext() == RustContext.USE_TREE) { - if (context.parent.getChildCount() > 1 && context.parent.getChild(1).getText().equals("::")) { + if (context.parent.getChildCount() > 1 && "::".equals(context.parent.getChild(1).getText())) { // Not a leaf return; } @@ -704,8 +704,8 @@ public void enterReturnExpression(RustParser.ReturnExpressionContext context) { public void enterExpressionStatement(RustParser.ExpressionStatementContext context) { // may be return value RuleContext maybeFunctionBlock = context.parent.parent; - boolean isImplicitReturnValue = maybeFunctionBlock instanceof RustParser.StatementsContext && (maybeFunctionBlock.getChildCount() == 1) - && (state.getCurrentContext() == RustContext.FUNCTION_BODY) && !(context.getChild(0) instanceof RustParser.ReturnExpressionContext); + boolean isImplicitReturnValue = maybeFunctionBlock instanceof RustParser.StatementsContext && maybeFunctionBlock.getChildCount() == 1 + && state.getCurrentContext() == RustContext.FUNCTION_BODY && !(context.getChild(0) instanceof RustParser.ReturnExpressionContext); if (isImplicitReturnValue) { transformToken(RETURN, context.getStart()); @@ -867,8 +867,9 @@ public void enterEveryRule(ParserRuleContext context) { } else if (context.parent instanceof RustParser.CallParamsContext) { transformToken(ARGUMENT, expression.getStart(), expression.getStop()); } else if (context.parent instanceof RustParser.TuplePatternItemsContext || context.parent instanceof RustParser.TupleElementsContext) { - if (state.getCurrentContext() == RustContext.REDUNDANT_TUPLE) + if (state.getCurrentContext() == RustContext.REDUNDANT_TUPLE) { return; + } transformToken(TUPLE_ELEMENT, expression.getStart()); } else if (context.parent instanceof RustParser.ClosureExpressionContext) { transformToken(CLOSURE_BODY_START, context.getStart()); diff --git a/languages/rust/src/main/java/de/jplag/rust/grammar/RustLexerBase.java b/languages/rust/src/main/java/de/jplag/rust/grammar/RustLexerBase.java index cf99293cdf..f8a0bb27cb 100644 --- a/languages/rust/src/main/java/de/jplag/rust/grammar/RustLexerBase.java +++ b/languages/rust/src/main/java/de/jplag/rust/grammar/RustLexerBase.java @@ -62,7 +62,7 @@ private boolean lookAheadMatchesOneOf(String... expected) { } public boolean floatLiteralPossible() { - if (this.currentToken == null || this.currentToken.getType() != RustLexer.DOT || (this.previousToken == null)) { + if (this.currentToken == null || this.currentToken.getType() != RustLexer.DOT || this.previousToken == null) { return true; } diff --git a/languages/rust/src/test/java/de/jplag/rust/RustLanguageTest.java b/languages/rust/src/test/java/de/jplag/rust/RustLanguageTest.java index 5d424d7cec..f9b78a1e8d 100644 --- a/languages/rust/src/test/java/de/jplag/rust/RustLanguageTest.java +++ b/languages/rust/src/test/java/de/jplag/rust/RustLanguageTest.java @@ -59,8 +59,9 @@ void parseTestFiles() throws ParsingException { logger.info(output); testSourceCoverage(fileName, tokens); - if (fileName.equals(COMPLETE_TEST_FILE)) + if (COMPLETE_TEST_FILE.equals(fileName)) { testTokenCoverage(tokens, fileName); + } } } @@ -83,7 +84,7 @@ private void testSourceCoverage(String fileName, List tokens) { // Keep only lines that have no tokens codeLines.removeAll(tokenLines); - double coverage = 1.d - (codeLines.size() * 1.d / (codeLines.size() + tokenLines.size())); + double coverage = 1.d - codeLines.size() * 1.d / (codeLines.size() + tokenLines.size()); if (coverage == 1) { logger.info("All lines covered."); } else { @@ -108,7 +109,8 @@ private List getCodeLines(List lines) { String line = lines.get(idx - 1); if (line.matches(RUST_EMPTY_OR_SINGLE_LINE_COMMENT)) { return false; - } else if (idx == 1 && line.matches(RUST_SHEBANG)) { + } + if (idx == 1 && line.matches(RUST_SHEBANG)) { return false; } else if (line.matches(RUST_MULTILINE_COMMENT_BEGIN)) { state.insideMultilineComment = true; diff --git a/languages/scxml/src/main/java/de/jplag/scxml/parser/ScxmlParser.java b/languages/scxml/src/main/java/de/jplag/scxml/parser/ScxmlParser.java index 2ca392be02..d0a0939f9b 100644 --- a/languages/scxml/src/main/java/de/jplag/scxml/parser/ScxmlParser.java +++ b/languages/scxml/src/main/java/de/jplag/scxml/parser/ScxmlParser.java @@ -99,7 +99,7 @@ private State visitState(Node node) { assert id != null : "state element must have id attribute"; boolean initial = initialStateTargets.contains(id) || NodeUtil.getAttribute(node, INITIAL_ATTRIBUTE) != null; - boolean parallel = node.getNodeName().equals(PARALLEL_STATE_ELEMENT); + boolean parallel = PARALLEL_STATE_ELEMENT.equals(node.getNodeName()); Node child = NodeUtil.getFirstChild(node, INITIAL_ELEMENT); assert !(parallel && child != null) : "parallel state " + id + " must not have initial element"; @@ -114,7 +114,7 @@ private Action visitAction(Node node) throws IllegalArgumentException { if (node == null) { return null; } - Action.Type type = node.getNodeName().equals(ONENTRY_ELEMENT) ? Action.Type.ON_ENTRY : Action.Type.ON_EXIT; + Action.Type type = ONENTRY_ELEMENT.equals(node.getNodeName()) ? Action.Type.ON_ENTRY : Action.Type.ON_EXIT; return new Action(type, visitExecutableContents(node)); } diff --git a/languages/scxml/src/main/java/de/jplag/scxml/parser/model/executable_content/If.java b/languages/scxml/src/main/java/de/jplag/scxml/parser/model/executable_content/If.java index 272509cb09..8f3e66006f 100644 --- a/languages/scxml/src/main/java/de/jplag/scxml/parser/model/executable_content/If.java +++ b/languages/scxml/src/main/java/de/jplag/scxml/parser/model/executable_content/If.java @@ -40,9 +40,9 @@ public If(String cond, ExecutableContent... contents) { } private static void addBranch(String branch, List contents, List elseIfs, List elses) { - if (branch.equals(ELSEIF_ELEMENT)) { + if (ELSEIF_ELEMENT.equals(branch)) { elseIfs.add(new ElseIf(contents)); - } else if (branch.equals(ELSE_ELEMENT)) { + } else if (ELSE_ELEMENT.equals(branch)) { elses.add(new Else(contents)); } } @@ -84,8 +84,8 @@ public static If fromNode(Node node) throws IllegalArgumentException { for (int i = 0; i < childNodes.getLength(); i++) { Node childNode = childNodes.item(i); String nodeName = childNode.getNodeName(); - if (nodeName.equals(ELSEIF_ELEMENT) || nodeName.equals(ELSE_ELEMENT)) { - if (curBranch.equals(IF_ELEMENT)) { + if (ELSEIF_ELEMENT.equals(nodeName) || ELSE_ELEMENT.equals(nodeName)) { + if (IF_ELEMENT.equals(curBranch)) { ifContents = new ArrayList<>(curContents); } @@ -97,7 +97,7 @@ public static If fromNode(Node node) throws IllegalArgumentException { } } - if (curBranch.equals(IF_ELEMENT)) { + if (IF_ELEMENT.equals(curBranch)) { ifContents = curContents; } else { // Close the last branch, if there is any diff --git a/languages/swift/src/main/java/de/jplag/swift/SwiftListener.java b/languages/swift/src/main/java/de/jplag/swift/SwiftListener.java index 3b95d98ac6..962df94b46 100644 --- a/languages/swift/src/main/java/de/jplag/swift/SwiftListener.java +++ b/languages/swift/src/main/java/de/jplag/swift/SwiftListener.java @@ -1,9 +1,105 @@ package de.jplag.swift; -import static de.jplag.swift.SwiftTokenType.*; +import static de.jplag.swift.SwiftTokenType.ASSIGNMENT; +import static de.jplag.swift.SwiftTokenType.BREAK; +import static de.jplag.swift.SwiftTokenType.CATCH_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.CATCH_BODY_END; +import static de.jplag.swift.SwiftTokenType.CLASS_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.CLASS_BODY_END; +import static de.jplag.swift.SwiftTokenType.CLASS_DECLARATION; +import static de.jplag.swift.SwiftTokenType.CLOSURE_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.CLOSURE_BODY_END; +import static de.jplag.swift.SwiftTokenType.CONTINUE; +import static de.jplag.swift.SwiftTokenType.DEFER_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.DEFER_BODY_END; +import static de.jplag.swift.SwiftTokenType.DO_TRY_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.DO_TRY_BODY_END; +import static de.jplag.swift.SwiftTokenType.ENUM_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.ENUM_BODY_END; +import static de.jplag.swift.SwiftTokenType.ENUM_DECLARATION; +import static de.jplag.swift.SwiftTokenType.ENUM_LITERAL; +import static de.jplag.swift.SwiftTokenType.FALLTHROUGH; +import static de.jplag.swift.SwiftTokenType.FOR_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.FOR_BODY_END; +import static de.jplag.swift.SwiftTokenType.FUNCTION; +import static de.jplag.swift.SwiftTokenType.FUNCTION_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.FUNCTION_BODY_END; +import static de.jplag.swift.SwiftTokenType.FUNCTION_CALL; +import static de.jplag.swift.SwiftTokenType.FUNCTION_PARAMETER; +import static de.jplag.swift.SwiftTokenType.IF_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.IF_BODY_END; +import static de.jplag.swift.SwiftTokenType.IMPORT; +import static de.jplag.swift.SwiftTokenType.PROPERTY_ACCESSOR_BEGIN; +import static de.jplag.swift.SwiftTokenType.PROPERTY_ACCESSOR_END; +import static de.jplag.swift.SwiftTokenType.PROPERTY_DECLARATION; +import static de.jplag.swift.SwiftTokenType.PROTOCOL_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.PROTOCOL_BODY_END; +import static de.jplag.swift.SwiftTokenType.PROTOCOL_DECLARATION; +import static de.jplag.swift.SwiftTokenType.REPEAT_WHILE_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.REPEAT_WHILE_BODY_END; +import static de.jplag.swift.SwiftTokenType.RETURN; +import static de.jplag.swift.SwiftTokenType.STRUCT_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.STRUCT_BODY_END; +import static de.jplag.swift.SwiftTokenType.STRUCT_DECLARATION; +import static de.jplag.swift.SwiftTokenType.SWITCH_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.SWITCH_BODY_END; +import static de.jplag.swift.SwiftTokenType.SWITCH_CASE; +import static de.jplag.swift.SwiftTokenType.THROW; +import static de.jplag.swift.SwiftTokenType.WHILE_BODY_BEGIN; +import static de.jplag.swift.SwiftTokenType.WHILE_BODY_END; import de.jplag.antlr.AbstractAntlrListener; -import de.jplag.swift.grammar.Swift5Parser.*; +import de.jplag.swift.grammar.Swift5Parser.Binary_operatorContext; +import de.jplag.swift.grammar.Swift5Parser.Break_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Catch_clauseContext; +import de.jplag.swift.grammar.Swift5Parser.Class_bodyContext; +import de.jplag.swift.grammar.Swift5Parser.Class_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.Closure_expressionContext; +import de.jplag.swift.grammar.Swift5Parser.Code_blockContext; +import de.jplag.swift.grammar.Swift5Parser.Constant_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.Continue_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Defer_statementContext; +import de.jplag.swift.grammar.Swift5Parser.DidSet_clauseContext; +import de.jplag.swift.grammar.Swift5Parser.Do_blockContext; +import de.jplag.swift.grammar.Swift5Parser.Else_clauseContext; +import de.jplag.swift.grammar.Swift5Parser.Enum_nameContext; +import de.jplag.swift.grammar.Swift5Parser.Fallthrough_statementContext; +import de.jplag.swift.grammar.Swift5Parser.For_in_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Function_bodyContext; +import de.jplag.swift.grammar.Swift5Parser.Function_call_suffixContext; +import de.jplag.swift.grammar.Swift5Parser.Function_nameContext; +import de.jplag.swift.grammar.Swift5Parser.Function_resultContext; +import de.jplag.swift.grammar.Swift5Parser.Getter_clauseContext; +import de.jplag.swift.grammar.Swift5Parser.Getter_setter_blockContext; +import de.jplag.swift.grammar.Swift5Parser.Guard_statementContext; +import de.jplag.swift.grammar.Swift5Parser.If_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Import_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.InitializerContext; +import de.jplag.swift.grammar.Swift5Parser.Initializer_bodyContext; +import de.jplag.swift.grammar.Swift5Parser.Initializer_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.ParameterContext; +import de.jplag.swift.grammar.Swift5Parser.Protocol_bodyContext; +import de.jplag.swift.grammar.Swift5Parser.Protocol_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.Protocol_initializer_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.Protocol_property_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.Raw_value_assignmentContext; +import de.jplag.swift.grammar.Swift5Parser.Raw_value_style_enumContext; +import de.jplag.swift.grammar.Swift5Parser.Raw_value_style_enum_caseContext; +import de.jplag.swift.grammar.Swift5Parser.Raw_value_style_enum_membersContext; +import de.jplag.swift.grammar.Swift5Parser.Repeat_while_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Return_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Setter_clauseContext; +import de.jplag.swift.grammar.Swift5Parser.Struct_bodyContext; +import de.jplag.swift.grammar.Swift5Parser.Struct_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.Switch_caseContext; +import de.jplag.swift.grammar.Swift5Parser.Switch_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Throw_statementContext; +import de.jplag.swift.grammar.Swift5Parser.Union_style_enumContext; +import de.jplag.swift.grammar.Swift5Parser.Union_style_enum_caseContext; +import de.jplag.swift.grammar.Swift5Parser.Union_style_enum_membersContext; +import de.jplag.swift.grammar.Swift5Parser.Variable_declarationContext; +import de.jplag.swift.grammar.Swift5Parser.While_statementContext; +import de.jplag.swift.grammar.Swift5Parser.WillSet_clauseContext; public class SwiftListener extends AbstractAntlrListener { public SwiftListener() { diff --git a/languages/swift/src/main/java/de/jplag/swift/grammar/SwiftSupport.java b/languages/swift/src/main/java/de/jplag/swift/grammar/SwiftSupport.java index 9da0d5b09d..403a21e369 100644 --- a/languages/swift/src/main/java/de/jplag/swift/grammar/SwiftSupport.java +++ b/languages/swift/src/main/java/de/jplag/swift/grammar/SwiftSupport.java @@ -140,15 +140,14 @@ public class SwiftSupport { private static boolean isCharacterFromSet(Token token, BitSet bitSet) { if (token.getType() == Token.EOF) { return false; + } + String text = token.getText(); + int codepoint = text.codePointAt(0); + if (Character.charCount(codepoint) != text.length()) { + // not a single character + return false; } else { - String text = token.getText(); - int codepoint = text.codePointAt(0); - if (Character.charCount(codepoint) != text.length()) { - // not a single character - return false; - } else { - return bitSet.get(codepoint); - } + return bitSet.get(codepoint); } } @@ -161,7 +160,7 @@ public static boolean isOperatorCharacter(Token token) { } public static boolean isOpNext(TokenStream tokens) { - int start = tokens.index(); + tokens.index(); int stop = getLastOpTokenIndex(tokens); return stop != -1; // System.out.printf("isOpNext: i=%d t='%s'", start, lt.getText()); @@ -199,21 +198,18 @@ public static int getLastOpTokenIndex(TokenStream tokens) { // operator → operator-head­ operator-characters­? - if (isOperatorHead(currentToken)) { - // System.out.println("isOperatorHead"); - - currentToken = tokens.get(currentTokenIndex); - while (isOperatorCharacter(currentToken)) { - // System.out.println("isOperatorCharacter"); - currentTokenIndex++; - currentToken = tokens.get(currentTokenIndex); - } - // System.out.println("result: "+(currentTokenIndex - 1)); - return currentTokenIndex - 1; - } else { + if (!isOperatorHead(currentToken)) { // System.out.println("result: "+(-1)); return -1; } + currentToken = tokens.get(currentTokenIndex); + while (isOperatorCharacter(currentToken)) { + // System.out.println("isOperatorCharacter"); + currentTokenIndex++; + currentToken = tokens.get(currentTokenIndex); + } + // System.out.println("result: "+(currentTokenIndex - 1)); + return currentTokenIndex - 1; } /** @@ -223,8 +219,9 @@ public static int getLastOpTokenIndex(TokenStream tokens) { public static boolean isBinaryOp(TokenStream tokens) { SwiftSupport.fillUp(tokens); int stop = getLastOpTokenIndex(tokens); - if (stop == -1) + if (stop == -1) { return false; + } int start = tokens.index(); Token currentToken = tokens.get(start); @@ -236,13 +233,8 @@ public static boolean isBinaryOp(TokenStream tokens) { // System.out.println("isBinaryOp: '"+prevToken+"','"+text+"','"+nextToken+"' is "+result); if (prevIsWS) { return nextIsWS; - } else { - if (currentToken.getType() == Swift5Lexer.BANG || currentToken.getType() == Swift5Lexer.QUESTION) { - return false; - } else { - if (!nextIsWS) - return nextToken.getType() != Swift5Lexer.DOT; - } + } else if (currentToken.getType() != Swift5Lexer.BANG && currentToken.getType() != Swift5Lexer.QUESTION && !nextIsWS) { + return nextToken.getType() != Swift5Lexer.DOT; } return false; } @@ -254,8 +246,9 @@ public static boolean isBinaryOp(TokenStream tokens) { public static boolean isPrefixOp(TokenStream tokens) { SwiftSupport.fillUp(tokens); int stop = getLastOpTokenIndex(tokens); - if (stop == -1) + if (stop == -1) { return false; + } int start = tokens.index(); Token prevToken = tokens.get(start - 1); // includes hidden-channel tokens @@ -278,8 +271,9 @@ public static boolean isPrefixOp(TokenStream tokens) { public static boolean isPostfixOp(TokenStream tokens) { SwiftSupport.fillUp(tokens); int stop = getLastOpTokenIndex(tokens); - if (stop == -1) + if (stop == -1) { return false; + } int start = tokens.index(); Token prevToken = tokens.get(start - 1); // includes hidden-channel tokens @@ -294,8 +288,9 @@ public static boolean isPostfixOp(TokenStream tokens) { public static boolean isOperator(TokenStream tokens, String op) { SwiftSupport.fillUp(tokens); int stop = getLastOpTokenIndex(tokens); - if (stop == -1) + if (stop == -1) { return false; + } int start = tokens.index(); String text = tokens.getText(Interval.of(start, stop)); @@ -324,36 +319,36 @@ public static boolean isSeparatedStatement(TokenStream tokens, int indexOfPrevio int indexFrom = indexOfPreviousStatement - 1; int indexTo = tokens.index() - 1; - if (indexFrom >= 0) { - // Stupid check for new line and semicolon, can be optimized - while (indexFrom >= 0 && tokens.get(indexFrom).getChannel() == Token.HIDDEN_CHANNEL) { - indexFrom--; - } + if (indexFrom < 0) { + return true; + } + // Stupid check for new line and semicolon, can be optimized + while (indexFrom >= 0 && tokens.get(indexFrom).getChannel() == Token.HIDDEN_CHANNEL) { + indexFrom--; + } - // System.out.println("from: '" + tokens.getText(Interval.of(indexFrom, indexFrom))+"', "+tokens.get(indexFrom)); - // System.out.println("to: '" + tokens.getText(Interval.of(indexTo, indexTo))+"', "+tokens.get(indexTo)); - // System.out.println("in_between: '" + tokens.getText(Interval.of(indexFrom, indexTo))); + // System.out.println("from: '" + tokens.getText(Interval.of(indexFrom, indexFrom))+"', "+tokens.get(indexFrom)); + // System.out.println("to: '" + tokens.getText(Interval.of(indexTo, indexTo))+"', "+tokens.get(indexTo)); + // System.out.println("in_between: '" + tokens.getText(Interval.of(indexFrom, indexTo))); - // for (int i = previousIndex; i < currentIndex; i++) - for (int i = indexTo; i >= indexFrom; i--) { - String t = tokens.get(i).getText(); - if (t.contains("\n") || t.contains(";")) { - return true; - } + // for (int i = previousIndex; i < currentIndex; i++) + for (int i = indexTo; i >= indexFrom; i--) { + String t = tokens.get(i).getText(); + if (t.contains("\n") || t.contains(";")) { + return true; } - return false; - // String text = tokens.getText(Interval.of(indexFrom, indexTo)); - // return text.contains("\n") || text.contains(";"); - } else { - return true; } + return false; + // String text = tokens.getText(Interval.of(indexFrom, indexTo)); + // return text.contains("\n") || text.contains(";"); } public static void fillUp(TokenStream tokens) { for (int jj = 1;; ++jj) { int t = tokens.LA(jj); - if (t == -1) + if (t == -1) { break; + } } } } diff --git a/languages/swift/src/test/java/de/jplag/swift/SwiftFrontendTest.java b/languages/swift/src/test/java/de/jplag/swift/SwiftFrontendTest.java index d6f3469d97..c2828faf70 100644 --- a/languages/swift/src/test/java/de/jplag/swift/SwiftFrontendTest.java +++ b/languages/swift/src/test/java/de/jplag/swift/SwiftFrontendTest.java @@ -70,7 +70,7 @@ void parseTestFiles() throws ParsingException { logger.info(output); testSourceCoverage(fileName, tokens); - if (fileName.equals(COMPLETE_TEST_FILE)) { + if (COMPLETE_TEST_FILE.equals(fileName)) { testTokenCoverage(tokens, fileName); } @@ -121,7 +121,8 @@ private int[] getCodeLines(List lines) { String line = lines.get(idx - 1); if (line.matches(EMPTY_OR_SINGLE_LINE_COMMENT) || line.contains(NO_TOKEN_ANNOTATION)) { return false; - } else if (line.matches(DELIMITED_COMMENT_START)) { + } + if (line.matches(DELIMITED_COMMENT_START)) { state.insideComment = true; return false; } else if (state.insideComment) { diff --git a/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptLexerBase.java b/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptLexerBase.java index d08aa4cb68..7fa732bfa0 100644 --- a/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptLexerBase.java +++ b/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptLexerBase.java @@ -92,7 +92,7 @@ protected void processCloseBrace() { protected void processStringLiteral() { if (lastToken == null || lastToken.getType() == TypeScriptLexer.OpenBrace) { String text = getText(); - if (text.equals("\"use strict\"") || text.equals("'use strict'")) { + if ("\"use strict\"".equals(text) || "'use strict'".equals(text)) { if (!scopeStrictModes.isEmpty()) { scopeStrictModes.pop(); } diff --git a/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptParserBase.java b/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptParserBase.java index cf4c032cc9..b61a8fd411 100644 --- a/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptParserBase.java +++ b/languages/typescript/src/main/java/de/jplag/typescript/grammar/TypeScriptParserBase.java @@ -71,7 +71,7 @@ private boolean here(final int type) { // Check if the token resides on the HIDDEN channel and if it's of the // provided type. - return (ahead.getChannel() == Lexer.HIDDEN) && (ahead.getType() == type); + return ahead.getChannel() == Lexer.HIDDEN && ahead.getType() == type; } /** @@ -107,7 +107,6 @@ protected boolean lineTerminatorAhead() { int type = ahead.getType(); // Check if the token is, or contains a line terminator. - return (type == TypeScriptParser.MultiLineComment && (text.contains("\r") || text.contains("\n"))) - || (type == TypeScriptParser.LineTerminator); + return type == TypeScriptParser.MultiLineComment && (text.contains("\r") || text.contains("\n")) || type == TypeScriptParser.LineTerminator; } }