Skip to content

refactor: review ignored returns ("_, := " pattern) for explicit error handling #63

Description

@liplus-lin-lay

観察

_ := で error を捨てている箇所が production code に 12 箇所 (test 除く):

  • internal/ddns/cloudflare.go L55 (json.Marshal), L58/L85/L115 (http.NewRequest)
  • internal/ddns/mydns.go L88 (io.ReadAll on response body)
  • internal/mode/check.go L63 (ipFetch)
  • internal/mode/keepalive.go L32 (ipFetch)
  • internal/mode/update.go L44 (ipFetch), L77/L96/L129/L148 (ReadDomainCache)

このうち分類が分かれる:

  1. 意図的に許容される無視cached, _ := st.ReadDomainCache(...) は「キャッシュミスは無視して再取得」が正しい挙動
  2. 固定構造で実害が薄いjson.Marshal(payload) (固定 struct), http.NewRequest(MethodPatch, url, body) (定数 URL)
  3. 隠蔽が起き得るmydns.go L88 の response body read、ipFetch の error 無視は本来のエラーをマスクする可能性

提案

全箇所を survey して以下のいずれかに置換:

  • 1 のパターン: コメント追記で意図を明示 (// cache miss intentional 等) または独自ヘルパーでラップ
  • 2 のパターン: must ヘルパーで初期化時 panic、または明示的 err check
  • 3 のパターン: 本来の error handling に修正 (logging / 上位返却 / state 記録)

関連ファイル

  • internal/ddns/cloudflare.go
  • internal/ddns/mydns.go
  • internal/mode/check.go, keepalive.go, update.go
  • internal/ip/fetch.go (ipFetch の signature 確認)

優先度

低 — 実害が直ちに出る箇所はない、Go idiom との整合性向上目的。3 のパターンのみ中優先度。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestmemoissue started as note. Partial sections allowed.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions