Skip to content

Commit 3f1c49a

Browse files
committed
add utility methods to fetch line numbers from source code elements
1 parent 67b1df9 commit 3f1c49a

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

src/main/java/it/aboutbits/archunit/toolbox/util/LineNumberUtil.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import com.tngtech.archunit.core.domain.JavaMethod;
77
import com.tngtech.archunit.core.domain.JavaParameterizedType;
88
import com.tngtech.archunit.core.domain.JavaStaticInitializer;
9+
import com.tngtech.archunit.core.domain.properties.HasSourceCodeLocation;
910
import org.jspecify.annotations.NullMarked;
1011

1112
import java.util.List;
13+
import java.util.NoSuchElementException;
1214
import java.util.Set;
1315
import java.util.function.Function;
1416
import java.util.stream.Stream;
@@ -18,6 +20,23 @@ public final class LineNumberUtil {
1820
private LineNumberUtil() {
1921
}
2022

23+
public static int getLineNumber(HasSourceCodeLocation element) {
24+
return element.getSourceCodeLocation().getLineNumber();
25+
}
26+
27+
// JavaClass overload with constructor fallback: class-level SLOC is 0 for nested/anonymous classes
28+
public static int getLineNumber(JavaClass javaClass) {
29+
var lineNumber = javaClass.getSourceCodeLocation().getLineNumber();
30+
if (lineNumber != 0) {
31+
return lineNumber;
32+
}
33+
try {
34+
return javaClass.getConstructors().iterator().next().getSourceCodeLocation().getLineNumber();
35+
} catch (NoSuchElementException _) {
36+
return 0;
37+
}
38+
}
39+
2140
public static List<LineNumberType> getDependencyUsageLineNumberTypes(
2241
JavaClass originClass,
2342
JavaClass targetClass

0 commit comments

Comments
 (0)