From 26d62c9fcd9af55dcdb54d4a23bb920b787d94e8 Mon Sep 17 00:00:00 2001 From: xfy Date: Thu, 30 Apr 2026 16:23:34 +0800 Subject: [PATCH] refactor(handler): improve autoindex code quality MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use fmt.Fprintf directly on buffer instead of buf.WriteString(fmt.Sprintf(...)), handle dir.Close error in defer, use blank identifier for unused parameter, use range-over-int, and remove trailing blank line. 💘 Generated with Crush Assisted-by: GLM 5.1 via Crush --- internal/handler/autoindex.go | 13 ++++++------- internal/handler/autoindex_test.go | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/internal/handler/autoindex.go b/internal/handler/autoindex.go index da2e68a..7c88a3b 100644 --- a/internal/handler/autoindex.go +++ b/internal/handler/autoindex.go @@ -80,7 +80,7 @@ func readDirectory(dirPath string) ([]dirEntry, error) { if err != nil { return nil, err } - defer dir.Close() + defer func() { _ = dir.Close() }() infos, err := dir.Readdir(-1) if err != nil { @@ -117,7 +117,7 @@ func generateHTMLIndex(ctx *fasthttp.RequestCtx, reqPath string, entries []dirEn // HTML 头部 buf.WriteString("\n") buf.WriteString("\n\n") - buf.WriteString(fmt.Sprintf("Index of %s\n", html.EscapeString(reqPath))) + fmt.Fprintf(&buf, "Index of %s\n", html.EscapeString(reqPath)) buf.WriteString("\n") buf.WriteString("\n\n") - buf.WriteString(fmt.Sprintf("

Index of %s

\n", html.EscapeString(reqPath))) + fmt.Fprintf(&buf, "

Index of %s

\n", html.EscapeString(reqPath)) buf.WriteString("
\n\n") buf.WriteString("\n") buf.WriteString("\n") @@ -167,8 +167,8 @@ func generateHTMLIndex(ctx *fasthttp.RequestCtx, reqPath string, entries []dirEn sizeStr = formatSize(entry.Size) } - buf.WriteString(fmt.Sprintf("\n", - href, html.EscapeString(displayName), timeStr, sizeStr)) + fmt.Fprintf(&buf, "\n", + href, html.EscapeString(displayName), timeStr, sizeStr) } buf.WriteString("\n
NameModifiedSize
%s%s%s
%s%s%s
\n
\n\n\n") @@ -179,7 +179,7 @@ func generateHTMLIndex(ctx *fasthttp.RequestCtx, reqPath string, entries []dirEn } // generateJSONIndex 生成 JSON 格式的目录列表。 -func generateJSONIndex(ctx *fasthttp.RequestCtx, reqPath string, entries []dirEntry) { +func generateJSONIndex(ctx *fasthttp.RequestCtx, _ string, entries []dirEntry) { type jsonEntry struct { Name string `json:"name"` Type string `json:"type"` @@ -277,4 +277,3 @@ func formatSize(size int64) string { return fmt.Sprintf("%d", size) } } - diff --git a/internal/handler/autoindex_test.go b/internal/handler/autoindex_test.go index 4104065..37cff34 100644 --- a/internal/handler/autoindex_test.go +++ b/internal/handler/autoindex_test.go @@ -404,7 +404,7 @@ func BenchmarkGenerateAutoIndex_HTML(b *testing.B) { defer os.RemoveAll(tmpDir) // 创建 100 个文件 - for i := 0; i < 100; i++ { + for i := range 100 { if err := os.WriteFile(filepath.Join(tmpDir, fmt.Sprintf("file%d.txt", i)), []byte("content"), 0o644); err != nil { b.Fatal(err) }