Commit fc28063
committed
improve error messages for synthetic/anonymous class violations
When ArchUnit rules fail on synthetic or anonymous classes generated by the
compiler (e.g., from lambdas or enum switches), new users are often confused
by error messages pointing to classes they didn't write (MyService$1).
This commit enhances naming convention error messages to detect synthetic/
anonymous classes and provide a helpful hint directing users to exclude
these classes using .doNotHaveModifier(JavaModifier.SYNTHETIC) or
.areNotAnonymousClasses().
The implementation uses a custom ArchCondition that checks the failing
object and appends the hint only when the condition fails on a synthetic
or anonymous class, ensuring regular violations remain unchanged.
Implementation details:
- Checks both SYNTHETIC (compiler-generated, e.g., enum switch maps per JLS 13.1.7)
and anonymous classes (both can cause unexpected naming violations)
- Applies to haveSimpleNameStartingWith, haveSimpleNameContaining,
and haveSimpleNameEndingWith methods
- Fully compatible with Java 8-21 (all APIs available since Java 1.5)
- Includes unit tests for anonymous classes and integration tests
for synthetic classes
Resolves: #1509
Signed-off-by: chadongmin <cdm2883@naver.com>1 parent 687323f commit fc28063
4 files changed
Lines changed: 95 additions & 5 deletions
File tree
- archunit-integration-test/src/test/java/com/tngtech/archunit
- integration
- testutils
- archunit/src
- main/java/com/tngtech/archunit/lang/conditions
- test/java/com/tngtech/archunit/lang/syntax/elements
Lines changed: 5 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1391 | 1391 | | |
1392 | 1392 | | |
1393 | 1393 | | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
1394 | 1399 | | |
1395 | 1400 | | |
1396 | 1401 | | |
| |||
Lines changed: 19 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
13 | 21 | | |
14 | 22 | | |
| 23 | + | |
15 | 24 | | |
16 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
17 | 30 | | |
18 | 31 | | |
| 32 | + | |
19 | 33 | | |
20 | 34 | | |
21 | 35 | | |
| |||
31 | 45 | | |
32 | 46 | | |
33 | 47 | | |
34 | | - | |
35 | | - | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
36 | 53 | | |
37 | 54 | | |
38 | 55 | | |
Lines changed: 42 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
530 | 530 | | |
531 | 531 | | |
532 | 532 | | |
533 | | - | |
| 533 | + | |
534 | 534 | | |
535 | 535 | | |
536 | 536 | | |
| |||
540 | 540 | | |
541 | 541 | | |
542 | 542 | | |
543 | | - | |
| 543 | + | |
544 | 544 | | |
545 | 545 | | |
546 | 546 | | |
| |||
550 | 550 | | |
551 | 551 | | |
552 | 552 | | |
553 | | - | |
| 553 | + | |
554 | 554 | | |
555 | 555 | | |
556 | 556 | | |
| |||
1308 | 1308 | | |
1309 | 1309 | | |
1310 | 1310 | | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
1311 | 1350 | | |
1312 | 1351 | | |
1313 | 1352 | | |
| |||
Lines changed: 29 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
372 | 372 | | |
373 | 373 | | |
374 | 374 | | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
375 | 404 | | |
376 | 405 | | |
377 | 406 | | |
| |||
0 commit comments