Skip to content

duration: デフォルト値のエラー握り潰し・無音0s・単位不整合を解消 (#17)#23

Merged
ieee0824 merged 1 commit into
masterfrom
fix/duration-default-handling
Jun 17, 2026
Merged

duration: デフォルト値のエラー握り潰し・無音0s・単位不整合を解消 (#17)#23
ieee0824 merged 1 commit into
masterfrom
fix/duration-default-handling

Conversation

@ieee0824

Copy link
Copy Markdown
Owner

概要

Duration のデフォルト値処理に集中していた正確性フットガン(#7/#8/#9)を、後方互換を保って解消します。

Closes #17

背景(監査検出)

  • int系の型のparserを増やす #7 文字列デフォルトのパースエラーを握り潰し、無音で 0s を採用(d, _ = time.ParseDuration(s))。Duration("TIMEOUT","30s") のタイポが 0s → ハングやタイトループを招き得る
  • dump dotenv mode #8 未対応型(int64/float64 等)のデフォルトが全分岐を素通りし無音 0sinterface{} シグネチャがコンパイル時チェックを奪う
  • Dump dotenv #9 単位不整合: int=秒 だが time.Duration(60)=60ns(同じ 60 で 1e9 倍差)

変更点(方針: log+0sフォールバック / 単位はドキュメント明記)

  • 文字列デフォルトのパースエラーを握り潰さず log.Printf(panic せず 0s フォールバック)(int系の型のparserを増やす #7)
  • 未対応型のデフォルトを log.Printf で警告(無音 0s をやめる)(dump dotenv mode #8)
  • int64/int32/float64 を「秒」として明示サポート(int と一貫、無音 0s を解消)(dump dotenv mode #8)
  • 単位規約(int 系=秒、time.Duration=そのまま=ns、string=ParseDuration)を doc コメント + README(en/jp) に明記(Dump dotenv #9)
  • 関連: env 値のパース失敗も Int* と一貫して log 出力(返り値は不変。秘密漏洩回避のため env 側はキー名のみログ)

後方互換

  • 既存の duration_test.go の全ケース(int=秒、time.Duration(60)=60ns 含む)はそのまま通過。挙動の破壊的変更なし(エラー時にログが増えるのみ)
  • 単位統一(破壊的)は採用せず、ドキュメント明記に留めています

テスト

  • go build / go vet ✅、go test / go test -race
  • duration_test.go に追加: int64/int32/float64=秒、不正文字列デフォルト→0、未対応型(bool/uint)→0

🤖 Generated with Claude Code

## 理由
Duration のデフォルト値処理に、(#7)文字列パースエラーの握り潰し、
(#8)未対応型での無音 0s、(#9)単位不整合(int=秒 / time.Duration=ナノ秒)
という正確性のフットガンがあった(#17)。設定ミスがサイレントに 0s となり
タイムアウト不全等を招くため、可視化しつつ後方互換を保って解消する。

## 修正点
- 文字列デフォルトのパースエラーを握り潰さず log 出力(panic せず 0s フォールバック)
- 未対応型のデフォルトを log 出力(無音 0s をやめる)
- int64 / int32 / float64 を「秒」として明示サポート(int と一貫、無音 0s を解消)
- env 値のパース失敗も Int* と一貫して log 出力(秘密漏洩回避のためキー名のみ)
- 単位規約(int 系=秒、time.Duration=そのまま)を doc コメントと README(en/jp)に明記
- duration_test.go に新挙動(数値型/不正文字列/未対応型)のケースを追加
@ieee0824 ieee0824 merged commit a8fe1ae into master Jun 17, 2026
1 check passed
@ieee0824 ieee0824 deleted the fix/duration-default-handling branch June 17, 2026 06:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Duration: デフォルト値のエラー握り潰し・未対応型での無音0s・単位不整合

1 participant