com.intellij.psi.PsiElementVisitor#EMPTY_VISITOR源码实例Demo

下面列出了com.intellij.psi.PsiElementVisitor#EMPTY_VISITOR 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: intellij-swagger   文件: YamlSchemaInspection.java
@NotNull
@Override
public PsiElementVisitor buildVisitor(
    @NotNull final ProblemsHolder holder,
    final boolean isOnTheFly,
    @NotNull final LocalInspectionToolSession session) {

  PsiFile file = holder.getFile();

  if (fileDetector.isMainOpenApiYamlFile(file)) {
    return createVisitor("openapi.json", holder, session, file);
  } else if (fileDetector.isMainSwaggerYamlFile(file)) {
    return createVisitor("swagger.json", holder, session, file);
  } else {
    return PsiElementVisitor.EMPTY_VISITOR;
  }
}
 
源代码2 项目: intellij-swagger   文件: JsonSchemaInspection.java
@NotNull
@Override
public PsiElementVisitor buildVisitor(
    @NotNull final ProblemsHolder holder,
    final boolean isOnTheFly,
    @NotNull final LocalInspectionToolSession session) {

  PsiFile file = holder.getFile();

  if (fileDetector.isMainOpenApiJsonFile(file)) {
    return createVisitor("openapi.json", holder, session, file);
  } else if (fileDetector.isMainSwaggerJsonFile(file)) {
    return createVisitor("swagger.json", holder, session, file);
  } else {
    return PsiElementVisitor.EMPTY_VISITOR;
  }
}
 
@NotNull
@Override
public PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, final boolean isOnTheFly) {
    if (isInspectionEnabled(holder.getProject())) {
        return new PsiElementVisitor() {
            @Override
            public void visitElement(PsiElement element) {
                if (accept(element)) {
                    String text = getIdeaUtils().extractTextFromElement(element, false, false, true);
                    if (!StringUtils.isEmpty(text)) {
                        validateText(element, holder, text, isOnTheFly);
                    }
                }
            }
        };
    } else {
        return PsiElementVisitor.EMPTY_VISITOR;
    }
}
 
源代码4 项目: intellij-swagger   文件: YamlSchemaInspection.java
private PsiElementVisitor createVisitor(
    final String schemaFileName,
    final ProblemsHolder holder,
    final LocalInspectionToolSession session,
    final PsiFile file) {
  List<YAMLDocument> documents = ((YAMLFile) file).getDocuments();
  if (documents.size() != 1) return PsiElementVisitor.EMPTY_VISITOR;

  PsiElement root = documents.get(0).getTopLevelValue();
  if (root == null) return PsiElementVisitor.EMPTY_VISITOR;

  JsonSchemaService service = JsonSchemaService.Impl.get(file.getProject());

  final URL url = ResourceUtil.getResource(getClass(), "schemas", schemaFileName);
  final VirtualFile virtualFile = VfsUtil.findFileByURL(url);

  final JsonSchemaObject schema = service.getSchemaObjectForSchemaFile(virtualFile);

  return new YamlPsiElementVisitor() {
    @Override
    public void visitElement(PsiElement element) {
      if (element != root) return;
      final JsonLikePsiWalker walker = JsonLikePsiWalker.getWalker(element, schema);
      if (walker == null) return;

      JsonComplianceCheckerOptions options = new JsonComplianceCheckerOptions(false);

      new JsonSchemaComplianceChecker(schema, holder, walker, session, options).annotate(element);
    }
  };
}
 
源代码5 项目: intellij-swagger   文件: JsonSchemaInspection.java
private PsiElementVisitor createVisitor(
    final String schemaFileName,
    final ProblemsHolder holder,
    final LocalInspectionToolSession session,
    final PsiFile file) {

  JsonValue root =
      file instanceof JsonFile
          ? ObjectUtils.tryCast(file.getFirstChild(), JsonValue.class)
          : null;
  if (root == null) return PsiElementVisitor.EMPTY_VISITOR;

  JsonSchemaService service = JsonSchemaService.Impl.get(file.getProject());

  final URL url = ResourceUtil.getResource(getClass(), "schemas", schemaFileName);
  final VirtualFile virtualFile = VfsUtil.findFileByURL(url);

  final JsonSchemaObject schema = service.getSchemaObjectForSchemaFile(virtualFile);

  return new JsonElementVisitor() {
    @Override
    public void visitElement(PsiElement element) {
      if (element == root) {
        final JsonLikePsiWalker walker = JsonLikePsiWalker.getWalker(element, schema);
        if (walker == null) return;

        JsonComplianceCheckerOptions options = new JsonComplianceCheckerOptions(false);

        new JsonSchemaComplianceChecker(schema, holder, walker, session, options)
            .annotate(element);
      }
    }
  };
}
 
@Nonnull
@Override
public PsiElementVisitor buildVisitor(@Nonnull final ProblemsHolder holder, boolean isOnTheFly)
{
	if(Unity3dModuleExtensionUtil.getRootModule(holder.getProject()) == null)
	{
		return PsiElementVisitor.EMPTY_VISITOR;
	}

	return new CSharpElementVisitor()
	{
		@Override
		@RequiredReadAction
		public void visitNewExpression(CSharpNewExpression expression)
		{
			DotNetType newType = expression.getNewType();
			if(newType == null)
			{
				return;
			}
			DotNetTypeRef typeRef = expression.toTypeRef(true);
			if(CSharpTypeUtil.isInheritable(new CSharpTypeRefByQName(expression, Unity3dTypes.UnityEngine.MonoBehaviour), typeRef, expression))
			{
				holder.registerProblem(newType, Unity3dBundle.message("new.mono.behaviour.inspection.message"));
			}
		}
	};
}
 
源代码7 项目: consulo-csharp   文件: MatchNamespaceInspection.java
@Nonnull
@Override
@RequiredReadAction
public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder holder, boolean isOnTheFly, @Nonnull LocalInspectionToolSession session)
{
	PsiFile file = holder.getFile();
	if(!(file instanceof CSharpFile))
	{
		return PsiElementVisitor.EMPTY_VISITOR;
	}

	if(file instanceof PsiCodeFragment)
	{
		return PsiElementVisitor.EMPTY_VISITOR;
	}

	DotNetSimpleModuleExtension extension = ModuleUtilCore.getExtension(file, DotNetSimpleModuleExtension.class);
	if(extension == null)
	{
		return PsiElementVisitor.EMPTY_VISITOR;
	}

	MatchNamespaceVisitor visitor = session.getUserData(KEY);
	if(visitor == null)
	{
		session.putUserData(KEY, visitor = new MatchNamespaceVisitor(holder, extension));
	}
	return visitor;
}
 
@Nonnull
@Override
public PsiElementVisitor buildVisitor(@Nonnull ProblemsHolder holder, boolean isOnTheFly)
{
	if(Unity3dModuleExtensionUtil.getRootModule(holder.getProject()) == null)
	{
		return PsiElementVisitor.EMPTY_VISITOR;
	}

	return new CSharpElementVisitor()
	{
		@Override
		@RequiredReadAction
		public void visitBinaryExpression(CSharpBinaryExpressionImpl expression)
		{
			IElementType operatorElementType = expression.getOperatorElement().getOperatorElementType();

			if(operatorElementType == CSharpTokens.EQEQ || operatorElementType == CSharpTokens.NTEQ)
			{
				DotNetExpression leftExpression = expression.getLeftExpression();

				DotNetExpression rightExpression = expression.getRightExpression();
				if(rightExpression == null)
				{
					return;
				}

				if(leftExpression instanceof CSharpReferenceExpression)
				{
					String referenceName = ((CSharpReferenceExpression) leftExpression).getReferenceName();
					if("tag".equals(referenceName))
					{
						PsiElement maybeField = ((CSharpReferenceExpression) leftExpression).resolve();
						if(maybeField instanceof CSharpPropertyDeclaration)
						{

							DotNetExpression qualifier = ((CSharpReferenceExpression) leftExpression).getQualifier();
							CSharpTypeDeclaration target = null;
							if(qualifier == null)
							{
								target = PsiTreeUtil.getParentOfType(leftExpression, CSharpTypeDeclaration.class);
							}
							else if(qualifier instanceof CSharpReferenceExpression)
							{
								PsiElement resolveTarget = ((CSharpReferenceExpression) qualifier).resolve();
								if(resolveTarget instanceof CSharpTypeDeclaration)
								{
									target = (CSharpTypeDeclaration) resolveTarget;
								}
							}

							if(target == null)
							{
								return;
							}

							if(target.isInheritor(Unity3dTypes.UnityEngine.Component, true))
							{
								holder.registerProblem(expression, "Using CompareTag for tag comparison does not cause allocations", new ReplaceByCompareTagFix(expression));
							}
						}
					}
				}
			}
		}
	};
}