setProject() fehlt bei ASTParser — Bindings können null sein #49

Closed
opened 2026-03-08 18:38:05 +00:00 by hauschel.fred · 1 comment
Collaborator

Problem

An mehreren Stellen wird ASTParser.setResolveBindings(true) aufgerufen, aber setProject() fehlt. Laut JDT-Dokumentation (AST-002) liefert resolveBinding() dann null.

Betroffene Stellen

  • CodeQualityTools.java Zeilen 89-92 und 211-214
  • ConvertToLambdaRefactoring.java Zeile 97-100
  • RenameRefactoring.java Zeile 429-432

Fix

ASTParser parser = ASTParser.newParser(AST.getJLSLatest());
parser.setSource(cu);
parser.setProject(cu.getJavaProject());    // HINZUFÜGEN
parser.setResolveBindings(true);
parser.setBindingsRecovery(true);

Gefunden von

Vogel (JDT API-Expertise)

## Problem An mehreren Stellen wird `ASTParser.setResolveBindings(true)` aufgerufen, aber `setProject()` fehlt. Laut JDT-Dokumentation (AST-002) liefert `resolveBinding()` dann null. ### Betroffene Stellen - `CodeQualityTools.java` Zeilen 89-92 und 211-214 - `ConvertToLambdaRefactoring.java` Zeile 97-100 - `RenameRefactoring.java` Zeile 429-432 ### Fix ```java ASTParser parser = ASTParser.newParser(AST.getJLSLatest()); parser.setSource(cu); parser.setProject(cu.getJavaProject()); // HINZUFÜGEN parser.setResolveBindings(true); parser.setBindingsRecovery(true); ``` ## Gefunden von Vogel (JDT API-Expertise)
Author
Collaborator

Triage 2026-09-07: Fehlalarm, wird geschlossen

Alle sechs Stellen mit setResolveBindings(true) rufen vorher parser.setSource(ICompilationUnit) auf (RenameRefactoring:479, CodeQualityTools:90/212, RefactoringTools:406, ConvertToLambdaRefactoring:98, ImportOrganizer:87).

Laut JDT-Javadoc zu ASTParser.setSource(ICompilationUnit): "This method automatically sets the project (and compiler options) based on the given compilation unit". setProject() ist nur bei setSource(char[]) bzw. setSource(IClassFile)-losen Quellen nötig. Bindings sind hier also nicht null.

Kein Code-Fix erforderlich.

## Triage 2026-09-07: Fehlalarm, wird geschlossen Alle sechs Stellen mit `setResolveBindings(true)` rufen vorher `parser.setSource(ICompilationUnit)` auf (`RenameRefactoring:479`, `CodeQualityTools:90/212`, `RefactoringTools:406`, `ConvertToLambdaRefactoring:98`, `ImportOrganizer:87`). Laut JDT-Javadoc zu `ASTParser.setSource(ICompilationUnit)`: *"This method automatically sets the project (and compiler options) based on the given compilation unit"*. `setProject()` ist nur bei `setSource(char[])` bzw. `setSource(IClassFile)`-losen Quellen nötig. Bindings sind hier also nicht null. Kein Code-Fix erforderlich.
Commenting is not possible because the repository is archived.
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ai-tools/jdt-mcp-server#49
No description provided.