Skip to content

Commit aeb296b

Browse files
committed
Add consistent double spacing between report sections
1 parent d5973fa commit aeb296b

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

cmd/output_markdown.go

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import (
1111
func 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

Comments
 (0)