2222import java .io .IOException ;
2323import java .io .PrintWriter ;
2424import java .io .StringWriter ;
25+ import java .util .Comparator ;
2526import java .util .List ;
2627import java .util .regex .Pattern ;
2728
@@ -157,17 +158,33 @@ public String generateShadeReport(final ShadeAlignmentResult result, final Patte
157158 writer .println ();
158159 }
159160
160- // Only show unaligned shaded artifacts in the main report
161+ // Show both aligned and unaligned shaded artifacts, similar to regular dependency reports
162+ List <Artifact > alignedShadedArtifacts = result .getShadedArtifacts ()
163+ .stream ()
164+ .filter (artifact -> alignmentPattern .matcher (artifact .getVersion ()).find ())
165+ .collect (java .util .stream .Collectors .toList ());
166+
161167 List <Artifact > unalignedShadedArtifacts = result .getShadedArtifacts ()
162168 .stream ()
163169 .filter (artifact -> !alignmentPattern .matcher (artifact .getVersion ()).find ())
164170 .collect (java .util .stream .Collectors .toList ());
165171
172+ if (!alignedShadedArtifacts .isEmpty ()) {
173+ String title = String .format ("%d Aligned artifacts affected by shading" , alignedShadedArtifacts .size ());
174+ writer .println (title );
175+ writer .println ("-" .repeat (title .length ()));
176+ for (Artifact artifact : alignedShadedArtifacts ) {
177+ writer .println (String .format ("Aligned - %s" , artifact ));
178+ }
179+ writer .println ();
180+ }
181+
166182 if (!unalignedShadedArtifacts .isEmpty ()) {
167- writer .println ("Unaligned Artifacts Affected by Shading" );
168- writer .println ("---------------------------------------" );
183+ String title = String .format ("%d Unaligned artifacts affected by shading" , unalignedShadedArtifacts .size ());
184+ writer .println (title );
185+ writer .println ("-" .repeat (title .length ()));
169186 for (Artifact artifact : unalignedShadedArtifacts ) {
170- writer .println (String .format (" - %s" , artifact ));
187+ writer .println (String .format ("Unaligned - %s" , artifact ));
171188 }
172189 writer .println ();
173190 }
@@ -208,43 +225,57 @@ public String generateShadeAlignmentSummary(final ShadeAlignmentResult result, f
208225 .stream ()
209226 .filter (artifact -> !alignmentPattern .matcher (artifact .getVersion ())
210227 .find ())
211- .forEach (artifact -> writer .println (String .format (" - %s" , artifact )));
228+ .forEach (artifact -> writer .println (String .format ("Unaligned - %s" , artifact )));
212229 }
213230
214231 // Add path information if available
215232 if (result .hasPathInformation () && !result .getShadedArtifactsWithPaths ()
216233 .isEmpty ()) {
217234 writer .println ();
218- writer .println ("Unaligned Shaded Artifacts with Dependency Paths: " );
219- writer .println ("------------------------------------------------- " );
235+ writer .println ("Shaded Artifacts with Dependency Paths" );
236+ writer .println ("--------------------------------------" );
220237
221- // Group by direct vs transitive, but only show unaligned ones
222- List <ArtifactWithPath > directUnalignedShaded = result .getShadedArtifactsWithPaths ()
238+ // Group by alignment status and dependency type
239+ List <ArtifactWithPath > transitiveAlignedShaded = result .getShadedArtifactsWithPaths ()
223240 .stream ()
224- .filter (ArtifactWithPath ::isDirect )
225- .filter (awp -> !alignmentPattern .matcher (awp .getArtifact ().getVersion ()).find ())
226- .sorted ((a , b ) -> a .getArtifact ()
227- .toString ()
228- .compareTo (b .getArtifact ()
229- .toString ()))
241+ .filter (ArtifactWithPath ::isTransitive )
242+ .filter (awp -> alignmentPattern .matcher (awp .getArtifact ().getVersion ()).find ())
243+ .sorted (Comparator .comparing (a -> a .getArtifact ()
244+ .toString ()))
230245 .collect (java .util .stream .Collectors .toList ());
231246
232247 List <ArtifactWithPath > transitiveUnalignedShaded = result .getShadedArtifactsWithPaths ()
233248 .stream ()
234249 .filter (ArtifactWithPath ::isTransitive )
235250 .filter (awp -> !alignmentPattern .matcher (awp .getArtifact ().getVersion ()).find ())
236- .sorted ((a , b ) -> a .getArtifact ()
237- .toString ()
238- .compareTo (b .getArtifact ()
239- .toString ()))
251+ .sorted (Comparator .comparing (a -> a .getArtifact ()
252+ .toString ()))
240253 .collect (java .util .stream .Collectors .toList ());
241254
242- if (!directUnalignedShaded .isEmpty ()) {
255+ if (!transitiveAlignedShaded .isEmpty ()) {
256+ writer .println ();
257+ writer .println ("Direct Aligned Shaded Artifacts:" );
258+ writer .println ("---------------------------------" );
259+ for (ArtifactWithPath awp : transitiveAlignedShaded ) {
260+ writer .println (String .format ("Aligned - %s" , awp .getArtifact ()));
261+ }
262+ }
263+
264+ if (!transitiveUnalignedShaded .isEmpty ()) {
243265 writer .println ();
244266 writer .println ("Direct Unaligned Shaded Artifacts:" );
245267 writer .println ("----------------------------------" );
246- for (ArtifactWithPath awp : directUnalignedShaded ) {
247- writer .println (String .format (" - %s" , awp .getArtifact ()));
268+ for (ArtifactWithPath awp : transitiveUnalignedShaded ) {
269+ writer .println (String .format ("Unaligned - %s" , awp .getArtifact ()));
270+ }
271+ }
272+
273+ if (!transitiveAlignedShaded .isEmpty ()) {
274+ writer .println ();
275+ writer .println ("Transitive Aligned Shaded Artifacts:" );
276+ writer .println ("------------------------------------" );
277+ for (ArtifactWithPath awp : transitiveAlignedShaded ) {
278+ writer .println (String .format ("Aligned - %s" , awp .formatDependencyPath ()));
248279 }
249280 }
250281
@@ -253,7 +284,7 @@ public String generateShadeAlignmentSummary(final ShadeAlignmentResult result, f
253284 writer .println ("Transitive Unaligned Shaded Artifacts:" );
254285 writer .println ("--------------------------------------" );
255286 for (ArtifactWithPath awp : transitiveUnalignedShaded ) {
256- writer .println (String .format (" - %s" , awp .formatDependencyPath ()));
287+ writer .println (String .format ("Unaligned - %s" , awp .formatDependencyPath ()));
257288 }
258289 }
259290 }
0 commit comments