登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

kaito
@cu30rry_
Software engineer & Tech lead in 🇯🇵. I build software with coding agents - Cursor, GrokBot, Claude Code.
参加 November 2020
589 フォロー中    935 ファン
jevのlinterがでてきた! コードの命名・コメント・テストが実装内容とズレがないかを高速・安価に確認できるLinterだ 例えば、以下のような問題を見つけられる ・calculateTotal という関数が、合計を計算するだけでなく注文データまで保存している ・safeParseConfig という名前なのに、不正な設定を渡すと例外を投げる ・「同じ通知を二重送信しない」というテストが、通知処理を1回しか呼んでいない ・「5秒でタイムアウトする」というコメントがあるのに、実装では30秒に設定されている コードは正しく動いていても、名前やコメントが実装と異なることはよくあるが、これまではLLMでレビューコストをかけたり、人間が見つけるしかなかった jev-lintは、こうした意味のズレをAIで検査してくれるため、人間のレビュー負荷を下げてくれる これまでのLintや型チェッカーを置き換えるものではなく、それらに足りないものを補完してくれるLinterだ 構文や型、決められたパターンなど、機械的に判定できる問題は既存のツールに任せ、判断が必要な部分をjev-linterが担ういうjevの役割分担通りの使い方ができる 現在用意されている標準ルールは以下のとおり ・fn-name-promises 関数の処理が、名前から期待される内容と違っていないか ・var-name-describes-value 変数名が、実際に入っている値を正しく表しているか ・test-name-describes-code テスト名と、実際に実行している内容が一致しているか ・test-name-verifies-claim テスト名が主張している動作が壊れても、テストが通ってしまわないか ・module-name-describes-contents ファイル名やモジュール名が、中身の役割を表しているか ・module-naming-consistent 同じモジュール内の似た操作に、一貫した名前が付いているか ・safe-name-is-safe safe、try、OrNullなどと付いているのに、失敗が例外として外へ漏れていないか ・idempotent-name ensure、upsert、registerなどと付いているのに、繰り返し呼ぶことで余計な変更が発生しないか ・pure-name-is-pure compute、format、parseなどと付いているのに、外部の状態を読み書きしていないか ・test-mocks-subject 本番コードを検証しているように見えて、実際にはモックが返した値だけを確認していないか ・snapshot-only-behaviour-claim 特定の動作を検証すると書いてあるのに、スナップショットしか確認していないか ・comment-describes-declaration 関数や変数の上にあるコメントが、現在の実装と一致しているか ・comment-describes-block 処理の途中にあるコメントが、その直後のコードを正しく説明しているか ・log-level-matches-event 失敗なのにinfo、通常の処理なのにerrorなど、ログレベルが処理内容と食い違っていないか ・script-name-does package.jsonのscript名と、実際に実行するコマンドが一致しているか さらに、プロジェクトに合わせて独自ルールも追加できる 例えば、以下のようなルールを追加できる ・デバッグメッセージの内容と、実際に出力している値が一致しているか ・プロジェクト固有のアンチパターンが含まれていないか ・独自の命名規則と実装が一致しているか ・特定の処理に必要なエラー対応が抜けていないか
もっと見る
jev で命名と実装が食い違ってないか高速に確認する jev-lint を作ったので、記事書きました。