Commit 4aa48c4
committed
fix(go): distinguish direct from indirect dependencies
Add go mod edit -json parsing to GoModulesProvider to identify which
dependencies in go.mod are direct vs indirect. Since Go 1.17, go mod
tidy records all transitively-imported modules as require entries with
an // indirect marker, causing go mod graph to emit root-level edges
for all of them. Previously the Java client treated all root-level
edges as direct dependencies, inflating component analysis SBOMs.
The fix adds getDirectDependencyPaths() which runs go mod edit -json
and builds a Set of module paths where Indirect is false/absent. Both
buildSbomFromGraph (stack analysis) and buildSbomFromList (component
analysis) now filter root-level edges to only include direct deps.
Also adds getModulePath() helper to strip version suffixes from go
mod graph entries for comparison with go mod edit -json output.
Implements TC-4300
Assisted-by: Claude Code1 parent 601178a commit 4aa48c4
8 files changed
Lines changed: 956 additions & 1972 deletions
File tree
- src
- main/java/io/github/guacsec/trustifyda/providers
- test/resources
- msc/golang/mvs_logic
- tst_manifests/golang
- go_mod_light_no_ignore
- go_mod_no_ignore
- go_mod_with_ignore
Lines changed: 76 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
21 | 24 | | |
22 | 25 | | |
23 | 26 | | |
| |||
40 | 43 | | |
41 | 44 | | |
42 | 45 | | |
| 46 | + | |
43 | 47 | | |
44 | 48 | | |
45 | 49 | | |
| 50 | + | |
46 | 51 | | |
47 | 52 | | |
48 | 53 | | |
| |||
136 | 141 | | |
137 | 142 | | |
138 | 143 | | |
| 144 | + | |
139 | 145 | | |
140 | 146 | | |
141 | 147 | | |
142 | 148 | | |
143 | 149 | | |
144 | 150 | | |
145 | 151 | | |
146 | | - | |
| 152 | + | |
147 | 153 | | |
148 | | - | |
| 154 | + | |
149 | 155 | | |
150 | 156 | | |
151 | 157 | | |
| |||
264 | 270 | | |
265 | 271 | | |
266 | 272 | | |
267 | | - | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
268 | 277 | | |
269 | 278 | | |
270 | 279 | | |
| |||
300 | 309 | | |
301 | 310 | | |
302 | 311 | | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
303 | 323 | | |
304 | 324 | | |
305 | 325 | | |
| |||
422 | 442 | | |
423 | 443 | | |
424 | 444 | | |
425 | | - | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
426 | 497 | | |
427 | 498 | | |
428 | 499 | | |
| |||
433 | 504 | | |
434 | 505 | | |
435 | 506 | | |
| 507 | + | |
436 | 508 | | |
437 | 509 | | |
438 | 510 | | |
| |||
Lines changed: 1 addition & 39 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3989 | 3989 | | |
3990 | 3990 | | |
3991 | 3991 | | |
3992 | | - | |
3993 | | - | |
3994 | 3992 | | |
3995 | | - | |
3996 | | - | |
3997 | | - | |
3998 | | - | |
3999 | | - | |
4000 | | - | |
4001 | | - | |
4002 | | - | |
4003 | | - | |
4004 | 3993 | | |
4005 | | - | |
4006 | 3994 | | |
4007 | | - | |
4008 | | - | |
4009 | 3995 | | |
4010 | | - | |
4011 | | - | |
4012 | | - | |
4013 | | - | |
4014 | | - | |
4015 | | - | |
4016 | | - | |
4017 | | - | |
4018 | | - | |
4019 | | - | |
4020 | | - | |
4021 | | - | |
4022 | | - | |
4023 | | - | |
4024 | | - | |
4025 | | - | |
4026 | 3996 | | |
4027 | | - | |
4028 | | - | |
4029 | 3997 | | |
4030 | | - | |
4031 | | - | |
4032 | | - | |
4033 | | - | |
4034 | | - | |
4035 | | - | |
4036 | | - | |
| 3998 | + | |
4037 | 3999 | | |
4038 | 4000 | | |
4039 | 4001 | | |
| |||
Lines changed: 2 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | 32 | | |
41 | 33 | | |
42 | 34 | | |
43 | 35 | | |
44 | 36 | | |
45 | 37 | | |
46 | 38 | | |
47 | | - | |
48 | | - | |
| 39 | + | |
49 | 40 | | |
50 | 41 | | |
51 | 42 | | |
| |||
55 | 46 | | |
56 | 47 | | |
57 | 48 | | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | 49 | | |
63 | 50 | | |
64 | | - | |
| 51 | + | |
Lines changed: 1 addition & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
315 | 315 | | |
316 | 316 | | |
317 | 317 | | |
318 | | - | |
319 | | - | |
| 318 | + | |
320 | 319 | | |
321 | 320 | | |
322 | 321 | | |
| |||
0 commit comments