Skip to content

Commit 3674af6

Browse files
authored
Merge pull request #4887 from volodya-lombrozo/4884-qulice-upgrade
build(#4884): upgrade qulice to version 0.25.1 for eo-parser
2 parents d9c4a18 + fa4355e commit 3674af6

19 files changed

Lines changed: 182 additions & 124 deletions

eo-parser/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@
213213
<plugin>
214214
<groupId>com.qulice</groupId>
215215
<artifactId>qulice-maven-plugin</artifactId>
216+
<version>0.25.1</version>
216217
<configuration>
217218
<excludes>
218219
<exclude>checkstyle:/src/main/java/org/eolang/parser/XeEoListener.java</exclude>

eo-parser/src/main/java/org/eolang/parser/DrListing.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,19 @@ final class DrListing implements Iterable<Directive> {
3333

3434
@Override
3535
public Iterator<Directive> iterator() {
36-
final String text = this.context.getStart().getInputStream().getText(
37-
new Interval(
38-
this.context.getStart().getStartIndex(),
39-
this.context.getStop().getStopIndex()
40-
)
41-
);
4236
return new Directives()
4337
.xpath("/object")
4438
.strict(1).add("listing")
45-
.set(StringEscapeUtils.escapeXml11(text))
39+
.set(
40+
StringEscapeUtils.escapeXml11(
41+
this.context.getStart().getInputStream().getText(
42+
new Interval(
43+
this.context.getStart().getStartIndex(),
44+
this.context.getStop().getStopIndex()
45+
)
46+
)
47+
)
48+
)
4649
.iterator();
4750
}
4851
}

eo-parser/src/main/java/org/eolang/parser/EoIndentLexer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.util.Collections;
99
import java.util.Deque;
1010
import java.util.LinkedList;
11-
import java.util.Stack;
11+
import java.util.concurrent.ConcurrentLinkedDeque;
1212
import org.antlr.v4.runtime.CharStream;
1313
import org.antlr.v4.runtime.CharStreams;
1414
import org.antlr.v4.runtime.CommonToken;
@@ -35,7 +35,7 @@ final class EoIndentLexer extends EoLexer {
3535
/**
3636
* Spaces.
3737
*/
38-
private final Stack<String> spaces;
38+
private final Deque<String> spaces;
3939

4040
/**
4141
* Ctor.
@@ -56,7 +56,7 @@ private EoIndentLexer(final CharStream stream) {
5656
Collections.singletonList(0)
5757
);
5858
this.tokens = new LinkedList<>();
59-
this.spaces = new Stack<>();
59+
this.spaces = new ConcurrentLinkedDeque<>();
6060
}
6161

6262
@Override

eo-parser/src/main/java/org/eolang/parser/EoSyntax.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ public EoSyntax(final Input ipt) {
173173
* @return Parsed XML
174174
* @throws IOException If fails
175175
*/
176+
@SuppressWarnings("PMD.UnnecessaryLocalRule")
176177
public XML parsed() throws IOException {
177178
final List<Text> lines = this.lines();
178179
final GeneralErrors spy = new GeneralErrors(lines);

eo-parser/src/main/java/org/eolang/parser/ObjectName.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
* Object name.
1111
* @since 0.56.5
1212
*/
13+
@FunctionalInterface
1314
public interface ObjectName extends Supplier<String> {
1415
}

eo-parser/src/main/java/org/eolang/parser/OnDefault.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public OnDefault(final Xnav nav) {
4040
}
4141

4242
@Override
43+
@SuppressWarnings("PMD.UnnecessaryLocalRule")
4344
public String get() {
4445
final String obj = this.name()
4546
.orElseThrow(

eo-parser/src/main/java/org/eolang/parser/StrictXmir.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,14 @@
4444
* then encapsulate it into this decorator.</p>
4545
*
4646
* @since 0.49.0
47+
* @todo #4884:30min Replace synchronized statements with ReentrantLock.
48+
* We are getting the following complaint about {@ling StrictXmir}:
49+
* StrictXmir.java[244-289]: Use ReentrantLock rather than synchronization
50+
* (AvoidSynchronizedStatement). It's better to consider this replacement.
51+
* Don't forget to remove PMD.AvoidSynchronizedStatement from the
52+
* SuppressWarnings annotation of this class.
4753
*/
48-
@SuppressWarnings("PMD.TooManyMethods")
54+
@SuppressWarnings({"PMD.TooManyMethods", "PMD.AvoidSynchronizedStatement"})
4955
public final class StrictXmir implements XML {
5056
/**
5157
* XSD for current EO version.
@@ -76,7 +82,6 @@ public StrictXmir(final XML src) {
7682
* @param before The XML source
7783
* @param tmp The directory with cached XSD files
7884
*/
79-
@SuppressWarnings("PMD.ConstructorOnlyInitializesOrCallOtherConstructors")
8085
public StrictXmir(final XML before, final Path tmp) {
8186
this.xml = new Unchecked<>(
8287
new Synced<>(

eo-parser/src/main/java/org/eolang/parser/Syntax.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
* @see org.eolang.parser.EoSyntax Implementation for EO language
2323
* @since 0.34.0
2424
*/
25+
@FunctionalInterface
2526
interface Syntax {
2627
/**
2728
* Parses the source input and transforms it into XMIR format.

eo-parser/src/main/java/org/eolang/parser/XeEoListener.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
"PMD.TooManyMethods",
3232
"PMD.AvoidDuplicateLiterals",
3333
"PMD.ExcessivePublicCount",
34-
"PMD.ExcessiveClassLength",
35-
"PMD.GodClass"
34+
"PMD.GodClass",
35+
"PMD.CouplingBetweenObjects"
3636
})
3737
final class XeEoListener implements EoListener, Iterable<Directive> {
3838
/**
@@ -102,10 +102,9 @@ public void enterMetas(final EoParser.MetasContext ctx) {
102102
this.dirs.addIf("metas");
103103
for (final TerminalNode node : ctx.META()) {
104104
final String[] pair = node.getText().split(" ", 2);
105-
final String head = pair[0].substring(1);
106105
this.dirs.add("meta")
107106
.attr("line", node.getSymbol().getLine())
108-
.add("head").set(head).up()
107+
.add("head").set(pair[0].substring(1)).up()
109108
.add("tail");
110109
if (pair.length > 1) {
111110
this.dirs.set(XeEoListener.qqToGlobalPhi(pair[1].trim())).up();
@@ -416,7 +415,6 @@ public void exitHapplicationHeadExtended(
416415
}
417416

418417
@Override
419-
@SuppressWarnings("PMD.ConfusingTernary")
420418
public void enterApplicable(final EoParser.ApplicableContext ctx) {
421419
this.objects.start(ctx);
422420
final String base;
@@ -539,6 +537,7 @@ public void enterCompactTuple(final EoParser.CompactTupleContext ctx) {
539537
}
540538

541539
@Override
540+
@SuppressWarnings("PMD.UseStringIsEmptyRule")
542541
public void exitCompactTuple(final EoParser.CompactTupleContext ctx) {
543542
final int count;
544543
if (ctx.INT() != null) {
@@ -807,7 +806,6 @@ public void exitMethodTail(final EoParser.MethodTailContext ctx) {
807806
}
808807

809808
@Override
810-
@SuppressWarnings("PMD.ConfusingTernary")
811809
public void enterBeginner(final EoParser.BeginnerContext ctx) {
812810
this.objects.start(ctx);
813811
if (ctx.data() == null) {
@@ -836,7 +834,6 @@ public void exitBeginner(final EoParser.BeginnerContext ctx) {
836834
}
837835

838836
@Override
839-
@SuppressWarnings("PMD.ConfusingTernary")
840837
public void enterFinisher(final EoParser.FinisherContext ctx) {
841838
this.objects.start(ctx);
842839
final String base;
@@ -944,7 +941,6 @@ public void exitTarrow(final EoParser.TarrowContext ctx) {
944941
}
945942

946943
@Override
947-
@SuppressWarnings("PMD.ConfusingTernary")
948944
public void enterSuffix(final EoParser.SuffixContext ctx) {
949945
this.objects.enter();
950946
if (ctx.PHI() != null) {
@@ -980,7 +976,6 @@ public void exitScope(final EoParser.ScopeContext ctx) {
980976
}
981977

982978
@Override
983-
@SuppressWarnings("PMD.ConfusingTernary")
984979
public void enterAs(final EoParser.AsContext ctx) {
985980
this.objects.enter();
986981
final String has;
@@ -998,7 +993,6 @@ public void exitAs(final EoParser.AsContext ctx) {
998993
}
999994

1000995
@Override
1001-
@SuppressWarnings("PMD.ConfusingTernary")
1002996
public void enterData(final EoParser.DataContext ctx) {
1003997
final String text = ctx.getText();
1004998
if (ctx.BYTES() != null) {
@@ -1023,7 +1017,7 @@ public void enterData(final EoParser.DataContext ctx) {
10231017
data = new BytesToHex(
10241018
ByteBuffer
10251019
.allocate(Double.BYTES)
1026-
.putDouble(((Long) Long.parseLong(text.substring(2), 16)).doubleValue())
1020+
.putDouble(Long.parseLong(text.substring(2), 16))
10271021
.array()
10281022
);
10291023
} else if (ctx.STRING() != null) {
@@ -1035,10 +1029,9 @@ public void enterData(final EoParser.DataContext ctx) {
10351029
);
10361030
} else {
10371031
base = "Φ.org.eolang.string";
1038-
final int indent = ctx.getStart().getCharPositionInLine();
10391032
data = new BytesToHex(
10401033
StringEscapeUtils.unescapeJava(
1041-
XeEoListener.trimMargin(text, indent)
1034+
XeEoListener.trimMargin(text, ctx.getStart().getCharPositionInLine())
10421035
).getBytes(StandardCharsets.UTF_8)
10431036
);
10441037
}
@@ -1113,6 +1106,7 @@ private Objects startTest(final ParserRuleContext ctx) {
11131106
* @param comment As they come from the parser
11141107
* @param stop Stop line of the comment
11151108
*/
1109+
@SuppressWarnings("PMD.UseStringIsEmptyRule")
11161110
private void putComment(final List<EoParser.CommentContext> comment, final Token stop) {
11171111
if (!comment.isEmpty()) {
11181112
this.dirs.push().xpath("/object").addIf("comments").add("comment").set(
@@ -1161,13 +1155,12 @@ private String alphaAttr(final ParserRuleContext ctx, final String msg) {
11611155
* @return Trimmed text.
11621156
*/
11631157
private static String trimMargin(final String text, final int indent) {
1164-
final String rexp = "[\\s]{%d}";
11651158
final String cutted = text
11661159
.substring(3, text.length() - 3).trim();
11671160
final String[] splitted = cutted.split("\n");
11681161
StringBuilder res = new StringBuilder();
11691162
for (final String line : splitted) {
1170-
res.append(line.replaceAll(String.format(rexp, indent), "")).append('\n');
1163+
res.append(line.replaceAll(String.format("[\\s]{%d}", indent), "")).append('\n');
11711164
}
11721165
if (res.length() > 0 && res.charAt(0) == '\n') {
11731166
res = new StringBuilder(res.substring(1));

eo-parser/src/test/java/benchmarks/XmirBench.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ public class XmirBench {
5151
* @param args Arguments.
5252
* @throws RunnerException If something goes wrong.
5353
*/
54-
@SuppressWarnings("PMD.ProhibitPublicStaticMethods")
5554
public static void main(final String[] args) throws RunnerException {
5655
new Runner(
5756
new OptionsBuilder()

0 commit comments

Comments
 (0)