Java源码示例:org.jetbrains.uast.UQualifiedReferenceExpression
示例1
@Override
public boolean visitQualifiedReferenceExpression(@NotNull final UQualifiedReferenceExpression node) {
for (IssueDetector issueDetector : mIssueDetectors) {
issueDetector.visit(node);
}
return super.visitQualifiedReferenceExpression(node);
}
示例2
@Override
public void visit(final UQualifiedReferenceExpression node) {
final PsiField referencedField = ElementUtils.getReferencedField(node.getJavaPsi());
if (referencedField != null) {
visitFieldReference(node, referencedField);
}
}
示例3
private void visitFieldReference(final @NotNull UQualifiedReferenceExpression node, final PsiField field) {
final PsiClass containingClass = ElementUtils.getContainingClass(node);
if (!ConfigElementsUtils.hasFeatureRemoteConfigAnnotation(containingClass)) {
final boolean remoteConfigField = ConfigElementsUtils.hasConfigAnnotation(field);
if (remoteConfigField) {
report(node, ISSUE.getExplanation(TextFormat.TEXT) + " **" + CommonNamingUtils.getProviderClassName(field.getContainingClass()
.getName()) + "**");
}
}
}
示例4
public void visit(final UQualifiedReferenceExpression node) {
// No-op, to be overridden
}
示例5
private static boolean isGeneratedMethodCalled(UMethod method, String className, boolean isKotlin) {
UExpression methodBody = method.getUastBody();
if (methodBody == null) {
return false;
}
if (methodBody instanceof UBlockExpression) {
UBlockExpression methodBodyExpression = (UBlockExpression) methodBody;
List<UExpression> expressions = methodBodyExpression.getExpressions();
for (UExpression expression : expressions) {
if (isKotlin && expression instanceof KotlinUFunctionCallExpression) {
KotlinUFunctionCallExpression functionalExpression = (KotlinUFunctionCallExpression) expression;
if ("onRequestPermissionsResult".equals(functionalExpression.getMethodName())) {
return true;
}
}
if (!(expression instanceof UQualifiedReferenceExpression)) {
continue;
}
UQualifiedReferenceExpression referenceExpression = (UQualifiedReferenceExpression) expression;
UExpression receiverExpression = referenceExpression.getReceiver();
PsiElement receiverPsi = receiverExpression.getPsi();
if (receiverPsi == null) {
continue; // can this case be happened?
}
String receiverName = receiverPsi.getText();
if ("super".equals(receiverName)) {
// skip super method call
continue;
}
if (isKotlin && referenceExpression instanceof KotlinUQualifiedReferenceExpression) {
if ("onRequestPermissionsResult".equals(referenceExpression.getResolvedName())) {
return true;
}
} else {
String targetClassName = className + "PermissionsDispatcher";
if (targetClassName.equals(receiverName) && "onRequestPermissionsResult".equals(referenceExpression.getResolvedName())) {
return true;
}
}
}
}
return false;
}
示例6
@Override public boolean visitQualifiedReferenceExpression(UQualifiedReferenceExpression node) {
detectR2(context, node);
return super.visitQualifiedReferenceExpression(node);
}