Skip to content

Commit 96d4efa

Browse files
committed
replace direct line number fetching with LineNumberUtil.getLineNumber
1 parent 3f1c49a commit 96d4efa

6 files changed

Lines changed: 23 additions & 39 deletions

src/main/java/it/aboutbits/archunit/toolbox/rule/base/BlacklistAnnotationsArchRule.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.Set;
1313

1414
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
15+
import static it.aboutbits.archunit.toolbox.util.LineNumberUtil.getLineNumber;
1516

1617
@SuppressWarnings({"checkstyle:InterfaceIsType", "java:S1214"})
1718
@NullMarked
@@ -80,7 +81,7 @@ public void check(JavaClass javaClass, ConditionEvents events) {
8081
javaClass.getFullName(),
8182
annotation.getRawType().getFullName(),
8283
javaClass.getSimpleName(),
83-
javaClass.getSourceCodeLocation().getLineNumber()
84+
getLineNumber(javaClass)
8485
);
8586
events.add(SimpleConditionEvent.violated(javaClass, message));
8687
}
@@ -96,7 +97,7 @@ public void check(JavaClass javaClass, ConditionEvents events) {
9697
method.getFullName(),
9798
annotation.getRawType().getFullName(),
9899
javaClass.getSimpleName(),
99-
method.getSourceCodeLocation().getLineNumber()
100+
getLineNumber(method)
100101
);
101102
events.add(SimpleConditionEvent.violated(method, message));
102103
}
@@ -111,7 +112,7 @@ public void check(JavaClass javaClass, ConditionEvents events) {
111112
method.getFullName(),
112113
annotation.getRawType().getFullName(),
113114
javaClass.getSimpleName(),
114-
method.getSourceCodeLocation().getLineNumber()
115+
getLineNumber(method)
115116
); // Parameter doesn't have its own SLOC, use method's
116117
events.add(SimpleConditionEvent.violated(parameter, message));
117118
}
@@ -129,7 +130,7 @@ public void check(JavaClass javaClass, ConditionEvents events) {
129130
javaClass.getFullName(),
130131
annotation.getRawType().getFullName(),
131132
javaClass.getSimpleName(),
132-
field.getSourceCodeLocation().getLineNumber()
133+
getLineNumber(field)
133134
);
134135
events.add(SimpleConditionEvent.violated(field, message));
135136
}

src/main/java/it/aboutbits/archunit/toolbox/rule/base/BlacklistMethodsArchRule.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.Set;
1313

1414
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
15+
import static it.aboutbits.archunit.toolbox.util.LineNumberUtil.getLineNumber;
1516

1617
@SuppressWarnings({"checkstyle:InterfaceIsType", "java:S1214"})
1718
@NullMarked
@@ -93,7 +94,7 @@ public void check(JavaClass javaClass, ConditionEvents events) {
9394
method.getFullName(),
9495
fullMethodName,
9596
javaClass.getSimpleName(),
96-
methodCall.getSourceCodeLocation().getLineNumber()
97+
getLineNumber(methodCall)
9798
);
9899
events.add(SimpleConditionEvent.violated(method, message));
99100
}
@@ -114,7 +115,7 @@ public void check(JavaClass javaClass, ConditionEvents events) {
114115
javaClass.getFullName(),
115116
fullMethodName,
116117
javaClass.getSimpleName(),
117-
methodCall.getSourceCodeLocation().getLineNumber()
118+
getLineNumber(methodCall)
118119
);
119120
events.add(SimpleConditionEvent.violated(staticInitializer, message));
120121
}

src/main/java/it/aboutbits/archunit/toolbox/rule/base/NoSystemOutOrErrArchRule.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.jspecify.annotations.NullMarked;
1010

1111
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
12+
import static it.aboutbits.archunit.toolbox.util.LineNumberUtil.getLineNumber;
1213

1314
@SuppressWarnings({"checkstyle:InterfaceIsType", "java:S1214"})
1415
@NullMarked
@@ -45,7 +46,7 @@ public void check(JavaClass javaClass, ConditionEvents events) {
4546
SYSTEM_CLASS,
4647
fieldAccess.getTarget().getName(),
4748
javaClass.getSimpleName(),
48-
fieldAccess.getSourceCodeLocation().getLineNumber()
49+
getLineNumber(fieldAccess)
4950
);
5051
events.add(SimpleConditionEvent.violated(staticInitializer, message));
5152
}
@@ -66,7 +67,7 @@ private void checkCodeUnits(JavaClass javaClass, ConditionEvents events) {
6667
SYSTEM_CLASS,
6768
fieldAccess.getTarget().getName(),
6869
javaClass.getSimpleName(),
69-
fieldAccess.getSourceCodeLocation().getLineNumber()
70+
getLineNumber(fieldAccess)
7071
);
7172
events.add(SimpleConditionEvent.violated(method, message));
7273
}

src/main/java/it/aboutbits/archunit/toolbox/rule/base/RecordPropertiesMustBeAccessedViaAccessorArchRule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.jspecify.annotations.NullMarked;
1010

1111
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.fields;
12+
import static it.aboutbits.archunit.toolbox.util.LineNumberUtil.getLineNumber;
1213

1314
@SuppressWarnings({"checkstyle:InterfaceIsType", "java:S1214"})
1415
@NullMarked
@@ -38,7 +39,7 @@ public void check(JavaField field, ConditionEvents events) {
3839
access.getOrigin().getFullName(),
3940
field.getName(),
4041
access.getOrigin().getOwner().getSimpleName(),
41-
access.getLineNumber()
42+
getLineNumber(access)
4243
);
4344
events.add(SimpleConditionEvent.violated(access, message));
4445
}

src/main/java/it/aboutbits/archunit/toolbox/rule/base/TestNestedClassMatchNameArchRule.java

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
import com.tngtech.archunit.lang.ConditionEvents;
99
import com.tngtech.archunit.lang.SimpleConditionEvent;
1010
import org.jspecify.annotations.NullMarked;
11-
import org.slf4j.LoggerFactory;
1211

1312
import java.util.stream.Collectors;
1413

1514
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
1615
import static it.aboutbits.archunit.toolbox.config.ArchRuleConfig.TEST_CLASS_SUFFIXES;
16+
import static it.aboutbits.archunit.toolbox.util.LineNumberUtil.getLineNumber;
1717

1818
@SuppressWarnings({"checkstyle:InterfaceIsType", "java:S1214"})
1919
@NullMarked
@@ -92,11 +92,7 @@ public void check(JavaClass testClass, ConditionEvents events) {
9292
var nestedClassBaseClassSimpleName = nestedClass.getName()
9393
.replace(nestedClass.getPackageName() + ".", "")
9494
.replaceAll("\\$.+", "");
95-
var nestedClassLineNumber = nestedClass.getConstructors()
96-
.iterator()
97-
.next()
98-
.getSourceCodeLocation()
99-
.getLineNumber();
95+
var nestedClassLineNumber = getLineNumber(nestedClass);
10096

10197
/*
10298
* This is only true for inner @Nested group classes like for example
@@ -145,25 +141,7 @@ public void check(JavaClass testClass, ConditionEvents events) {
145141
.anyMatch(methodName -> methodName.equals(expectedMethodName));
146142

147143
if (!methodExists) {
148-
int productionClassLineNumber = -1;
149-
150-
try {
151-
productionClassLineNumber = productionClass.getConstructors()
152-
.iterator()
153-
.next()
154-
.getSourceCodeLocation()
155-
.getLineNumber();
156-
} catch (Exception _) {
157-
var log = LoggerFactory.getLogger(getClass());
158-
log.error(
159-
"Failed to resolve productionClassLineNumber. [nestedClass.getName()={}, nestedClassBaseClassSimpleName={}, nestedClassLineNumber={}, expectedMethodName={}, productionClass.getName()={}]",
160-
nestedClass.getName(),
161-
nestedClassBaseClassSimpleName,
162-
nestedClassLineNumber,
163-
expectedMethodName,
164-
productionClass.getName()
165-
);
166-
}
144+
var productionClassLineNumber = getLineNumber(productionClass);
167145

168146
var message = "The @Nested test class <%s> (%s.java:%s)%ndoes not match any expected method name <%s> in production class <%s> (%s.java:%s)".formatted(
169147
nestedClass.getName(),

src/main/java/it/aboutbits/archunit/toolbox/rule/common/SortMappingsExhaustiveArchRule.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.tngtech.archunit.lang.ArchCondition;
88
import com.tngtech.archunit.lang.ConditionEvents;
99
import com.tngtech.archunit.lang.SimpleConditionEvent;
10+
import it.aboutbits.archunit.toolbox.util.LineNumberUtil;
1011
import lombok.extern.slf4j.Slf4j;
1112
import org.jspecify.annotations.NullMarked;
1213

@@ -17,6 +18,7 @@
1718
import java.util.stream.Stream;
1819

1920
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;
21+
import static it.aboutbits.archunit.toolbox.util.LineNumberUtil.getLineNumber;
2022

2123
@NullMarked
2224
public interface SortMappingsExhaustiveArchRule {
@@ -99,7 +101,7 @@ private static DetectedSortField detectSortMappings(JavaClass javaClass) {
99101
field.getName(),
100102
javaClass.getFullName(),
101103
javaClass.getSimpleName(),
102-
field.getSourceCodeLocation().getLineNumber()
104+
getLineNumber(field)
103105
);
104106
}
105107

@@ -114,7 +116,7 @@ private static DetectedSortField detectSortMappings(JavaClass javaClass) {
114116
"Failed to resolve enum type for SortMappings field in {} ({}.java:{})",
115117
javaClass.getFullName(),
116118
javaClass.getSimpleName(),
117-
javaClass.getSourceCodeLocation().getLineNumber()
119+
getLineNumber(javaClass)
118120
);
119121
}
120122
return new DetectedSortField(fieldToKeyNames, fieldToEnumClassName);
@@ -138,7 +140,7 @@ private static void validateSortMappings(
138140
fieldName,
139141
javaClass.getFullName(),
140142
javaClass.getSimpleName(),
141-
javaClass.getSourceCodeLocation().getLineNumber()
143+
getLineNumber(javaClass)
142144
);
143145
continue;
144146
}
@@ -158,7 +160,7 @@ private static void validateSortMappings(
158160
.filter(f -> f.getRawType()
159161
.isAssignableTo("it.aboutbits.springboot.toolbox.persistence.SortMappings"))
160162
.findFirst()
161-
.map(f -> f.getSourceCodeLocation().getLineNumber())
163+
.map(LineNumberUtil::getLineNumber)
162164
.orElse(-1);
163165

164166
var message = String.format(
@@ -180,7 +182,7 @@ private static void validateSortMappings(
180182
fieldName,
181183
javaClass.getFullName(),
182184
javaClass.getSimpleName(),
183-
javaClass.getSourceCodeLocation().getLineNumber()
185+
getLineNumber(javaClass)
184186
);
185187
}
186188
}

0 commit comments

Comments
 (0)