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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions