| 
25 | 25 | import org.sonar.plugins.communitydelphi.api.reporting.QuickFix;  | 
26 | 26 | import org.sonar.plugins.communitydelphi.api.reporting.QuickFixEdit;  | 
27 | 27 | import org.sonar.plugins.communitydelphi.api.symbol.declaration.UnitImportNameDeclaration;  | 
 | 28 | +import org.sonar.plugins.communitydelphi.api.symbol.declaration.UnitNameDeclaration;  | 
28 | 29 | 
 
  | 
29 | 30 | @Rule(key = "FullyQualifiedImport")  | 
30 | 31 | public class FullyQualifiedImportCheck extends DelphiCheck {  | 
31 | 32 | 
 
  | 
32 | 33 |   @Override  | 
33 | 34 |   public DelphiCheckContext visit(UnitImportNode unitImportNode, DelphiCheckContext context) {  | 
34 |  | -    if (!unitImportNode.isResolvedImport()) {  | 
 | 35 | +    UnitImportNameDeclaration importDeclaration = unitImportNode.getImportNameDeclaration();  | 
 | 36 | +    UnitNameDeclaration unitDeclaration = importDeclaration.getOriginalDeclaration();  | 
 | 37 | + | 
 | 38 | +    if (unitDeclaration == null || isAliasImport(importDeclaration, unitDeclaration)) {  | 
35 | 39 |       return context;  | 
36 | 40 |     }  | 
37 | 41 | 
 
  | 
38 |  | -    UnitImportNameDeclaration unitImportNameDeclaration = unitImportNode.getImportNameDeclaration();  | 
39 |  | - | 
40 |  | -    String unitFullyQualifiedName = unitImportNameDeclaration.getOriginalDeclaration().getImage();  | 
41 |  | -    String unitImportName = unitImportNameDeclaration.getImage();  | 
 | 42 | +    String actual = importDeclaration.fullyQualifiedName();  | 
 | 43 | +    String expected = unitDeclaration.fullyQualifiedName();  | 
42 | 44 | 
 
  | 
43 |  | -    if (unitImportName.length() != unitFullyQualifiedName.length()) {  | 
 | 45 | +    if (!actual.equalsIgnoreCase(expected)) {  | 
44 | 46 |       context  | 
45 | 47 |           .newIssue()  | 
46 | 48 |           .onNode(unitImportNode)  | 
47 | 49 |           .withMessage(  | 
48 |  | -              "Fully qualify this unit name (found: \"%s\" expected: \"%s\").",  | 
49 |  | -              unitImportName, unitFullyQualifiedName)  | 
 | 50 | +              "Fully qualify this unit name (found: \"%s\" expected: \"%s\").", actual, expected)  | 
50 | 51 |           .withQuickFixes(  | 
51 | 52 |               QuickFix.newFix("Fully qualify unit import")  | 
52 |  | -                  .withEdit(  | 
53 |  | -                      QuickFixEdit.replace(unitImportNode.getNameNode(), unitFullyQualifiedName)))  | 
 | 53 | +                  .withEdit(QuickFixEdit.replace(unitImportNode.getNameNode(), expected)))  | 
54 | 54 |           .report();  | 
55 | 55 |     }  | 
56 | 56 | 
 
  | 
57 | 57 |     return context;  | 
58 | 58 |   }  | 
 | 59 | + | 
 | 60 | +  private static boolean isAliasImport(  | 
 | 61 | +      UnitImportNameDeclaration importDeclaration, UnitNameDeclaration unitDeclaration) {  | 
 | 62 | +    return !importDeclaration.simpleName().equalsIgnoreCase(unitDeclaration.simpleName());  | 
 | 63 | +  }  | 
59 | 64 | }  | 
0 commit comments