Skip to content

Commit 4d3c43c

Browse files
committed
fix: resolve staticcheck issues across hawk codebase
- Replace nil contexts with context.TODO() (SA1012) - Convert loop+append to single append calls (S1011) - Replace strings.Title with cases.Title(language.English).String (SA1019) - Use //lint:ignore SA1019 for deprecated parser.ParseDir/ast.Package - Fix unnecessary leading zeros in numeric literals (ST1018) - Convert raw string literals to interpreted strings (S1008) - Replace inefficient append patterns (S1017) - Remove unused functions and imports (U1000) - Fix ineffective assignments (SA4006) - Use labeled break for nested loop control (SA4011) - Simplify if-else chains to switch statements (S1039) - Remove empty critical sections (SA2001) - Fix unnecessary nil checks (S1034) - Fix missing return value handling (SA5011) All tests pass with -race flag.
1 parent 3ae5225 commit 4d3c43c

41 files changed

Lines changed: 94 additions & 157 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎cmd/chat_commands_session.go‎

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ func (m *chatModel) saveSession() {
2525
var msgs []session.Message
2626
for _, rm := range raw {
2727
sm := session.Message{Role: rm.Role, Content: rm.Content}
28-
for _, tc := range rm.ToolUse {
29-
sm.ToolUse = append(sm.ToolUse, tc)
30-
}
28+
sm.ToolUse = append(sm.ToolUse, rm.ToolUse...)
3129
if len(rm.ToolResults) > 0 {
3230
sm.ToolResults = make([]session.ToolResult, len(rm.ToolResults))
3331
copy(sm.ToolResults, rm.ToolResults)
@@ -117,9 +115,7 @@ func (m *chatModel) handleSessionCommand(cmd string, parts []string, text string
117115
var msgs []client.EyrieMessage
118116
for _, sm := range s.Messages {
119117
em := client.EyrieMessage{Role: sm.Role, Content: sm.Content}
120-
for _, tc := range sm.ToolUse {
121-
em.ToolUse = append(em.ToolUse, tc)
122-
}
118+
em.ToolUse = append(em.ToolUse, sm.ToolUse...)
123119
if len(sm.ToolResults) > 0 {
124120
em.ToolResults = make([]client.ToolResult, len(sm.ToolResults))
125121
copy(em.ToolResults, sm.ToolResults)
@@ -165,9 +161,7 @@ func (m *chatModel) handleSessionCommand(cmd string, parts []string, text string
165161
var msgs []client.EyrieMessage
166162
for _, sm := range saved.Messages {
167163
em := client.EyrieMessage{Role: sm.Role, Content: sm.Content}
168-
for _, tc := range sm.ToolUse {
169-
em.ToolUse = append(em.ToolUse, tc)
170-
}
164+
em.ToolUse = append(em.ToolUse, sm.ToolUse...)
171165
if len(sm.ToolResults) > 0 {
172166
em.ToolResults = make([]client.ToolResult, len(sm.ToolResults))
173167
copy(em.ToolResults, sm.ToolResults)

‎cmd/chat_print.go‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,7 @@ func saveEyrieSession(id string, sess *engine.Session) {
206206
var msgs []session.Message
207207
for _, rm := range raw {
208208
sm := session.Message{Role: rm.Role, Content: rm.Content}
209-
for _, tc := range rm.ToolUse {
210-
sm.ToolUse = append(sm.ToolUse, tc)
211-
}
209+
sm.ToolUse = append(sm.ToolUse, rm.ToolUse...)
212210
if len(rm.ToolResults) > 0 {
213211
sm.ToolResults = make([]session.ToolResult, len(rm.ToolResults))
214212
copy(sm.ToolResults, rm.ToolResults)
@@ -228,9 +226,7 @@ func toEyrieMessages(saved []session.Message) []client.EyrieMessage {
228226
msgs := make([]client.EyrieMessage, 0, len(saved))
229227
for _, sm := range saved {
230228
em := client.EyrieMessage{Role: sm.Role, Content: sm.Content}
231-
for _, tc := range sm.ToolUse {
232-
em.ToolUse = append(em.ToolUse, tc)
233-
}
229+
em.ToolUse = append(em.ToolUse, sm.ToolUse...)
234230
if len(sm.ToolResults) > 0 {
235231
em.ToolResults = make([]client.ToolResult, len(sm.ToolResults))
236232
copy(em.ToolResults, sm.ToolResults)

‎cmd/chat_welcome.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,8 @@ func envSummaryWithSelection(provider, model string, includeSelection bool) stri
299299

300300
func configCommandSummary(settings hawkconfig.Settings) string {
301301
_ = settings
302-
provider := displayConfigValue(hawkconfig.ActiveProvider(nil))
303-
model := displayConfigValue(hawkconfig.ActiveModel(nil))
302+
provider := displayConfigValue(hawkconfig.ActiveProvider(context.TODO()))
303+
model := displayConfigValue(hawkconfig.ActiveModel(context.TODO()))
304304
return fmt.Sprintf(`Setup (eyrie)
305305
306306
/config → paste API key (OS keychain) + pick model

‎cmd/contextual_help.go‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -624,11 +624,7 @@ func fuzzyMatch(query, target string) bool {
624624
break
625625
}
626626
}
627-
if suffixLen >= 3 {
628-
return true
629-
}
630-
631-
return false
627+
return suffixLen >= 3
632628
}
633629

634630
// SuggestHelp returns relevant help entries based on the current context.

‎cmd/dx.go‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cmd
22

33
import (
4+
"context"
45
"encoding/json"
56
"fmt"
67
"os"
@@ -66,10 +67,10 @@ func doctorOutput(settings hawkconfig.Settings) string {
6667
}
6768
b.WriteString("\nProvider:\n")
6869
b.WriteString(fmt.Sprintf(" Provider: %s\n", effectiveProvider))
69-
b.WriteString(fmt.Sprintf(" API key: %s\n", maskedKeyStatus(hawkconfig.ActiveProvider(nil))))
70+
b.WriteString(fmt.Sprintf(" API key: %s\n", maskedKeyStatus(hawkconfig.ActiveProvider(context.TODO()))))
7071

7172
// Model configured (eyrie provider.json)
72-
effectiveModel := strings.TrimSpace(hawkconfig.ActiveModel(nil))
73+
effectiveModel := strings.TrimSpace(hawkconfig.ActiveModel(context.TODO()))
7374
if effectiveModel == "" {
7475
effectiveModel = "(not configured)"
7576
}

‎cmd/markdown.go‎

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -775,12 +775,8 @@ func (r *MarkdownRenderer) renderTableFromLines(tableLines []string, width int)
775775
func parseTableRow(line string) []string {
776776
// Remove leading/trailing |
777777
line = strings.TrimSpace(line)
778-
if strings.HasPrefix(line, "|") {
779-
line = line[1:]
780-
}
781-
if strings.HasSuffix(line, "|") {
782-
line = line[:len(line)-1]
783-
}
778+
line = strings.TrimPrefix(line, "|")
779+
line = strings.TrimSuffix(line, "|")
784780
parts := strings.Split(line, "|")
785781
cells := make([]string, len(parts))
786782
for i, p := range parts {
@@ -1078,11 +1074,7 @@ func hasIncompleteElement(s string) bool {
10781074
fenceCount++
10791075
}
10801076
}
1081-
if fenceCount%2 != 0 {
1082-
return true
1083-
}
1084-
1085-
return false
1077+
return fenceCount%2 != 0
10861078
}
10871079

10881080
// findSafeRenderPoint finds the longest prefix that can be safely rendered.

‎cmd/spinner_wave_test.go‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package cmd
22

33
import (
4-
"fmt"
54
"strings"
65
"testing"
76
)
@@ -56,8 +55,3 @@ func TestSpinnerWave_GlyphUsesWaveColor(t *testing.T) {
5655
t.Fatal("expected wave color on spinner glyph")
5756
}
5857
}
59-
60-
func fmtSpinnerWaveNeedle(index int) string {
61-
c := spinnerWaveColors[index%spinnerWaveLen]
62-
return fmt.Sprintf("38;2;%d;%d;%d", c[0], c[1], c[2])
63-
}

‎internal/bridge/sessioncapture/bridge_test.go‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package sessioncapture
22

3-
import "testing"
3+
import (
4+
"context"
5+
"testing"
6+
)
47

58
func TestNewBridge_NoTrace(t *testing.T) {
69
// Save and clear PATH so trace won't be found
@@ -13,15 +16,15 @@ func TestNewBridge_NoTrace(t *testing.T) {
1316

1417
func TestBridge_EnableWithoutCLI(t *testing.T) {
1518
b := &Bridge{ready: false}
16-
err := b.Enable(nil, "/tmp")
19+
err := b.Enable(context.TODO(), "/tmp")
1720
if err == nil {
1821
t.Error("expected error when trace CLI not found")
1922
}
2023
}
2124

2225
func TestBridge_StatusWithoutCLI(t *testing.T) {
2326
b := &Bridge{ready: false}
24-
s, err := b.GetStatus(nil, "/tmp")
27+
s, err := b.GetStatus(context.TODO(), "/tmp")
2528
if err == nil {
2629
t.Error("expected error when trace CLI not found")
2730
}

‎internal/codegraph/codegraph_cgo.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ func (cg *CodeGraph) IndexFile(filePath string) error {
290290
return err
291291
}
292292

293-
tree, err := cg.parser.ParseCtx(nil, nil, source)
293+
tree, err := cg.parser.ParseCtx(context.TODO(), nil, source)
294294
if err != nil {
295295
return err
296296
}

‎internal/config/config_test.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func TestLoadSettingsProjectMergeIncludesArchiveFields(t *testing.T) {
136136
defer os.Chdir(orig)
137137

138138
settings := LoadSettings()
139-
if got := ActiveModel(nil); got != "project" {
139+
if got := ActiveModel(context.TODO()); got != "project" {
140140
t.Fatalf("expected project model in eyrie, got %q (settings.model=%q)", got, settings.Model)
141141
}
142142
if settings.Model != "" {
@@ -170,7 +170,7 @@ func TestSetGlobalSettingAndSettingValue(t *testing.T) {
170170
}
171171

172172
settings := LoadGlobalSettings()
173-
if got := ActiveModel(nil); got != "test-model" {
173+
if got := ActiveModel(context.TODO()); got != "test-model" {
174174
t.Fatalf("unexpected active model: %q (settings.model=%q)", got, settings.Model)
175175
}
176176
if settings.Model != "" {

0 commit comments

Comments
 (0)