Skip to content

ci: i18nチェックを実際に落ちるようにし、誰も見ないカバレッジを削除#86

Merged
yuga-hashimoto merged 2 commits into
mainfrom
claude/app-crash-question-tool-fixes-yfhkco
Jul 25, 2026
Merged

ci: i18nチェックを実際に落ちるようにし、誰も見ないカバレッジを削除#86
yuga-hashimoto merged 2 commits into
mainfrom
claude/app-crash-question-tool-fixes-yfhkco

Conversation

@yuga-hashimoto

Copy link
Copy Markdown
Owner

残っている CI を一つずつ「実際に何を買っているか」で見直した結果の3件です。

1. i18n-check を実際に落ちるようにした

このチェックは構造上、絶対に失敗しませんでした。 exit 1 がどこにもなく、::warning を出すだけです。

しかも、指摘自体は正しかったのに誰も対応していませんでした。model_visibility_title / _row / _caption日本語以外の6ロケール全部で欠落した状態でリリースまで到達しています。

チェック対象が壊れているのに緑のままのチェックは、あることで CI 全体の信頼を下げます。 欠落を ::error にして exit 1 するようにしました。

現在のツリーで先に空実行して確認済みで、欠落ゼロなのでマージしても main は赤くなりません

2. jacoco カバレッジを削除

  • 閾値なし(violationRules なし)
  • バッジなし
  • README / CONTRIBUTING に言及なし
  • Codecov 等への送信なし

誰も開かない HTML をアーティファクトに置いているだけでした。レポートタスク・プラグイン・ワークフローの2ステップを削除しています。

カバレッジが必要になったら、実際に落ちるルール付きで戻すべきです。

3. .last-release を削除

v0.2.0 時点の残骸です。

tag=v0.2.0
source_sha=da6b778811ca61162a8339933ba37785c6f9b195
workflow_run=29745485309

ワークフロー・スクリプト・ドキュメントのどれからも読まれていません(release.yml はタグを .release-version から解決します)。

触らなかったもの

  • commitlint — 実利は「履歴が読みやすい」だけ(リリースノートは PR タイトルから生成されるのでコミット規約は関与しない)ですが、13秒なので消す理由もありません
  • pages.ymlpages/** 変更時のみ。妥当
  • android.yml の本体(detekt / spotless / testDebugUnitTest / lintDebug / assembleDebug)— すべて実質的な価値あり

気づいた点(このPRでは未対応)

release.yml.release-version を書き換えて main に push するだけでリリースが公開されます。ガードは何もないので、誤って触れば意図しないリリースが出ます。タグ重複チェックや environment protection を足すことはできますが、運用の好みが絡むので手を付けていません。

検証

  • testDebugUnitTest / lintDebug / assembleDebug / detekt / spotlessCheck → 成功
  • 新しい i18n ゲートを現在のリソースに対して空実行 → PASS
  • 両ワークフローの YAML パース確認

🤖 Generated with Claude Code

https://claude.ai/code/session_01L3eN8AmoAcBDCTEeMTY3ba


Generated by Claude Code

claude added 2 commits July 25, 2026 12:20
Three cleanups to CI, following a pass over what each check actually buys.

i18n-check never failed. It has no `exit 1` — it only emitted `::warning`
annotations, so it was structurally incapable of going red. It was also right
about something nobody acted on: `model_visibility_title`, `_row` and
`_caption` were missing from all six non-Japanese locales for long enough to
ship. A check that stays green while the thing it checks is broken costs more
trust than it earns, so missing keys are now errors and fail the job. Verified
against the current tree first — there are no gaps today, so this does not turn
main red on landing.

The jacoco coverage report had no threshold, no badge, no README mention and no
upload to any coverage service. It generated HTML into an artifact that nobody
opens. Removed the report task, the plugin and both workflow steps; if coverage
is wanted later it should come back with a rule that can actually fail.

`.last-release` was left over from v0.2.0 (`tag=v0.2.0`, a source_sha and a
workflow_run id) and no workflow, script or doc reads it. release.yml resolves
the tag from `.release-version`.

Verified `testDebugUnitTest`, `lintDebug`, `assembleDebug`, `detekt` and
`spotlessCheck`, and dry-ran the new i18n gate against the current resources.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L3eN8AmoAcBDCTEeMTY3ba
Its path filter only listed the string resources, so the previous commit —
which changes what the job does — did not run it. Adding the workflow's own
path means this push exercises the new blocking behaviour against the real
resources instead of only the local dry run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L3eN8AmoAcBDCTEeMTY3ba
@yuga-hashimoto
yuga-hashimoto marked this pull request as ready for review July 25, 2026 13:45
@yuga-hashimoto
yuga-hashimoto merged commit 52214dd into main Jul 25, 2026
3 checks passed
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.

2 participants