Skip to content

Commit c173d00

Browse files
committed
Handle aliased imports in FullyQualifiedImport
1 parent 3143498 commit c173d00

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

delphi-checks/src/main/java/au/com/integradev/delphi/checks/FullyQualifiedImportCheck.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,35 +25,40 @@
2525
import org.sonar.plugins.communitydelphi.api.reporting.QuickFix;
2626
import org.sonar.plugins.communitydelphi.api.reporting.QuickFixEdit;
2727
import org.sonar.plugins.communitydelphi.api.symbol.declaration.UnitImportNameDeclaration;
28+
import org.sonar.plugins.communitydelphi.api.symbol.declaration.UnitNameDeclaration;
2829

2930
@Rule(key = "FullyQualifiedImport")
3031
public class FullyQualifiedImportCheck extends DelphiCheck {
3132

3233
@Override
3334
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)) {
3539
return context;
3640
}
3741

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();
4244

43-
if (unitImportName.length() != unitFullyQualifiedName.length()) {
45+
if (!actual.equalsIgnoreCase(expected)) {
4446
context
4547
.newIssue()
4648
.onNode(unitImportNode)
4749
.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)
5051
.withQuickFixes(
5152
QuickFix.newFix("Fully qualify unit import")
52-
.withEdit(
53-
QuickFixEdit.replace(unitImportNode.getNameNode(), unitFullyQualifiedName)))
53+
.withEdit(QuickFixEdit.replace(unitImportNode.getNameNode(), expected)))
5454
.report();
5555
}
5656

5757
return context;
5858
}
59+
60+
private static boolean isAliasImport(
61+
UnitImportNameDeclaration importDeclaration, UnitNameDeclaration unitDeclaration) {
62+
return !importDeclaration.simpleName().equalsIgnoreCase(unitDeclaration.simpleName());
63+
}
5964
}

delphi-checks/src/test/java/au/com/integradev/delphi/checks/FullyQualifiedImportCheckTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,18 @@ void testUnresolvedImportShouldNotAddIssue() {
8282
.verifyNoIssues();
8383
}
8484

85+
@Test
86+
void testUnitAliasImportShouldNotAddIssue() {
87+
var testFile = new DelphiTestUnitBuilder().appendDecl("uses").appendDecl(" AliasName;");
88+
89+
CheckVerifier.newVerifier()
90+
.withCheck(new FullyQualifiedImportCheck())
91+
.withSearchPathUnit(new DelphiTestUnitBuilder().unitName("Scope.RealName"))
92+
.withUnitAlias("AliasName", "Scope.RealName")
93+
.onFile(testFile)
94+
.verifyNoIssues();
95+
}
96+
8597
@Test
8698
void testNotFullyQualifiedImportShouldAddIssue() {
8799
var importedUnit = new DelphiTestUnitBuilder().unitName("Scope.UnitU");

0 commit comments

Comments
 (0)