f(: # ← 構文エラー pass invalid-syntax: Expected a parameter or the end of the parameter list いまの ruff は構文エラーを select の設定に関係なく常時チェックしてくれる そもそも実行できないファイルを、実行する前に見つける 24
= order.total * 0.9 # ← 計算したのに return order.total # ← 使っていない F841 Local variable `discounted` is assigned to but never used 消し忘れ? それとも返し忘れのバグ? — 必ず立ち止まれる 27
= "' OR '1'='1" # ← 検索欄にこう入力されたら… query = f"SELECT * FROM users WHERE name = '{name}'" # → WHERE name = '' OR '1'='1' に展開され、条件が常に真になる # → 1 人を検索したはずが、全ユーザーの個人情報が返ってくる S608 Possible SQL injection vector through string-based query construction 個人情報の流出につながる SQL インジェクションを、書いた瞬間に指摘 51
def sync_orders(): # TODO: リトライ処理を入れる ← 誰が? どのチケットで? ... TD002 Missing author in TODO TD003 Missing issue link for this TODO 書きっぱなしの TODO を許さない — 担当とチケットを書くまで通らない 55
auto() SHIPPED = auto() REFUNDED = auto() # ← 新しく追加した match status: case Status.PAID: notify_paid() case Status.SHIPPED: notify_shipped() # ← REFUNDED は黙って素通り error: Match statement has unhandled case for values of type "Literal[Status.REFUNDED]" [exhaustive-match] AI が指摘してくれることもあるが、設定すれば毎回・全件洗い出される 81