原文(日本語に翻訳)
編集前のLSP診断が編集後に表示され、モデルがちょうど編集したファイルを再読み込みしてしまう問題を修正しました。
原文(英語)
Fixed LSP diagnostics from before an edit appearing after it, causing the model to re-read files it just edited.
概要
Claude Code v2.1.111では、LSP(Language Server Protocol)診断の処理順序に関するバグが修正されました。ファイル編集後に、編集前の古いLSP診断結果が表示されることがあり、これによりClaude Codeが「まだエラーがある」と誤判断してファイルを再読み込みするという問題が発生していました。この修正により、編集後は正しい診断結果が表示されます。
基本的な使い方
LSP診断とは
LSP(Language Server Protocol)診断とは、コードの構文エラー、型エラー、未使用変数などをリアルタイムで検出する機能です。Claude Codeはこの情報を活用してコードの問題を把握します。
修正の効果
# ファイル編集フロー(変更前):
# 1. Claudeがファイルを編集
# 2. 古い(編集前の)LSP診断が表示される
# 3. Claudeが「エラーがある」と判断して再度ファイルを読み込む
# 4. 不要な追加処理が発生
# ファイル編集フロー(変更後):
# 1. Claudeがファイルを編集
# 2. 編集後の正しいLSP診断が表示される
# 3. 問題なければ次のステップへ進む実践例
Pythonコードの修正タスク
python
# 修正前のファイル(型エラーあり)
def greet(name: str) -> str:
return 42 # TypeError: expected str, got int
# Claude Codeが修正を実施
def greet(name: str) -> str:
return f"Hello, {name}"
# 変更前:古い型エラーが再度表示され、Claudeが再読み込みしていた
# 変更後:修正後の診断(エラーなし)が正しく表示されるTypeScriptプロジェクトでの修正
typescript
// 修正前
const user: { name: string; age: number } = {
name: "Alice"
// age が不足でTypeScriptエラー
};
// Claude Codeが修正
const user: { name: string; age: number } = {
name: "Alice",
age: 30
};
// 変更前:修正後も古いエラーが表示されClaudeが再確認していた
// 変更後:修正後は正しくエラーなしと表示される連続的なバグ修正タスク
# 複数ファイルにわたるバグ修正を依頼する場合
"src/ディレクトリのTypeScriptエラーをすべて修正してください"
# 変更前:
# - ファイルA修正 → 古い診断が残り → 再読み込み → 無限ループ気味になることも
# 変更後:
# - ファイルA修正 → 正しい診断を確認 → ファイルBへ移動
# 効率的に複数ファイルの修正が完了するRustプロジェクトでのライフタイムエラー修正
rust
// 修正前(ライフタイムエラー)
fn first_word(s: &String) -> &str {
// エラーあり
}
// Claudeが正しく修正
fn first_word(s: &str) -> &str {
let bytes = s.as_bytes();
for (i, &item) in bytes.iter().enumerate() {
if item == b' ' {
return &s[0..i];
}
}
&s[..]
}
// 変更後:修正が完了した時点で正しい診断結果が得られる注意点
- この修正はLSPが設定されている環境(VS Code、Neovim等のエディタのLSPサーバーを利用している場合)で効果があります
- Claude CodeはLSP診断をコードの品質確認に活用しています。この修正により、その確認が正確になります
- LSP診断の更新にはわずかな遅延がある場合があります。大規模なリファクタリングでは、すべての診断が更新されるまで少し時間がかかることがあります
- この修正により、Claude Codeが同じファイルを繰り返し読み込む挙動が減少し、APIコストの節約にもつながります