@@ -11,6 +11,10 @@ import (
1111func formatMarkdownSummary (results * models.Results , allAssets []models.FileInfo ) string {
1212 var md strings.Builder
1313
14+ addGap := func () {
15+ md .WriteString ("\n \n " )
16+ }
17+
1418 md .WriteString ("# FlutterGuard Analysis Report\n \n " )
1519
1620 md .WriteString ("## 📋 Table of Contents\n \n " )
@@ -61,7 +65,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
6165 md .WriteString (fmt .Sprintf ("- **Min SDK:** %s\n " , results .AppInfo .MinSDKVersion ))
6266 md .WriteString (fmt .Sprintf ("- **Target SDK:** %s\n " , results .AppInfo .TargetSDK ))
6367 }
64- md . WriteString ( " \n " )
68+ addGap ( )
6569
6670 if results .CertificateInfo != nil {
6771 md .WriteString ("## 📜 Certificate Information\n \n " )
@@ -85,7 +89,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
8589 md .WriteString (fmt .Sprintf ("- %s\n " , n ))
8690 }
8791 }
88- md . WriteString ( " \n " )
92+ addGap ( )
8993 }
9094
9195 if len (results .Emails ) > 0 {
@@ -100,7 +104,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
100104 if len (results .Emails ) > 10 {
101105 md .WriteString (fmt .Sprintf ("\n *... and %d more in [emails.txt](emails.txt)*\n " , len (results .Emails )- 10 ))
102106 }
103- md . WriteString ( " \n " )
107+ addGap ( )
104108 }
105109
106110 if len (results .Domains ) > 0 {
@@ -115,15 +119,15 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
115119 if len (results .Domains ) > 10 {
116120 md .WriteString (fmt .Sprintf ("\n *... and %d more in [domains.txt](domains.txt)*\n " , len (results .Domains )- 10 ))
117121 }
118- md . WriteString ( " \n " )
122+ addGap ( )
119123 }
120124
121125 if len (allURLs ) > 0 {
122126 md .WriteString (fmt .Sprintf ("## 🔗 URLs\n \n **Total Found:** %d → [View All](urls.txt)\n \n " , len (allURLs )))
123127 md .WriteString (fmt .Sprintf ("- HTTP: %d\n " , len (results .URLs .HTTP )))
124128 md .WriteString (fmt .Sprintf ("- HTTPS: %d\n " , len (results .URLs .HTTPS )))
125129 md .WriteString (fmt .Sprintf ("- Other: %d\n " , len (results .URLs .FTP )+ len (results .URLs .WS )+ len (results .URLs .WSS )+ len (results .URLs .File )+ len (results .URLs .Content )+ len (results .URLs .Other )))
126- md . WriteString ( " \n " )
130+ addGap ( )
127131 }
128132
129133 if len (results .APIEndpoints ) > 0 {
@@ -138,7 +142,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
138142 if len (results .APIEndpoints ) > 10 {
139143 md .WriteString (fmt .Sprintf ("\n *... and %d more in [api_endpoints.txt](api_endpoints.txt)*\n " , len (results .APIEndpoints )- 10 ))
140144 }
141- md . WriteString ( " \n " )
145+ addGap ( )
142146 }
143147
144148 if len (results .HardcodedKeys ) > 0 {
@@ -154,7 +158,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
154158 if len (results .HardcodedKeys ) > 5 {
155159 md .WriteString (fmt .Sprintf ("\n *... and %d more in [hardcoded_keys.txt](hardcoded_keys.txt)*\n " , len (results .HardcodedKeys )- 5 ))
156160 }
157- md . WriteString ( " \n " )
161+ addGap ( )
158162 }
159163
160164 if results .Firebase != nil {
@@ -170,7 +174,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
170174 md .WriteString (fmt .Sprintf ("- `%s`\n " , e ))
171175 }
172176 }
173- md . WriteString ( " \n " )
177+ addGap ( )
174178 }
175179
176180 if len (results .Services ) > 0 {
@@ -195,7 +199,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
195199 md .WriteString (fmt .Sprintf ("- `%s`\n " , k ))
196200 }
197201 }
198- md . WriteString ( " \n " )
202+ addGap ( )
199203 }
200204 }
201205
@@ -223,7 +227,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
223227 md .WriteString (fmt .Sprintf ("\n *... and %d more in [permissions.txt](permissions.txt)*\n " , dangerousCount - 10 ))
224228 }
225229 }
226- md . WriteString ( " \n " )
230+ addGap ( )
227231 }
228232
229233 if len (results .Packages ) > 0 {
@@ -238,7 +242,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
238242 if len (results .Packages ) > 10 {
239243 md .WriteString (fmt .Sprintf ("\n *... and %d more in [packages.txt](packages.txt)*\n " , len (results .Packages )- 10 ))
240244 }
241- md . WriteString ( " \n " )
245+ addGap ( )
242246 }
243247
244248 if len (allAssets ) > 0 {
@@ -257,7 +261,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
257261 for ext , count := range extCounts {
258262 md .WriteString (fmt .Sprintf ("- [`%s`](assets/%s/) - %d files\n " , ext , ext , count ))
259263 }
260- md . WriteString ( " \n " )
264+ addGap ( )
261265 }
262266
263267 if results .DecompiledDirPath != "" {
@@ -270,6 +274,7 @@ func formatMarkdownSummary(results *models.Results, allAssets []models.FileInfo)
270274 md .WriteString ("- Native libraries (.so files)\n " )
271275 md .WriteString ("- Assets and raw files\n " )
272276 md .WriteString ("- META-INF signing information\n \n " )
277+ addGap ()
273278 }
274279
275280 md .WriteString ("---\n \n " )
0 commit comments