/*
 * Copyright (c) 2023 - 2024. KeyWare.Co.Ltd All rights reserved.
 * 项目名称：Java 信息安全性设计准则
 * 项目描述：用于检查Java源代码的安全性设计准则的Sonarqube插件
 * 版权说明：本软件属北京关键科技股份有限公司所有，在未获得北京关键科技股份有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.keyware.sonar.java.rules.checkers;

import org.sonar.check.Rule;
import org.sonar.java.ast.visitors.SubscriptionVisitor;
import org.sonar.plugins.java.api.tree.Tree;
import org.sonar.plugins.java.api.tree.VariableTree;

import java.util.Collections;
import java.util.List;

/**
 * TODO ABCVarNameChecker
 *
 * @author GuoXin
 * @date 2024/1/6
 */
@Rule(key = "ABCVarNameChecker")
public class ABCVarNameChecker extends SubscriptionVisitor {

    @Override
    public List<Tree.Kind> nodesToVisit() {
        return Collections.singletonList(
                Tree.Kind.VARIABLE
        );
    }

    @Override
    public void visitNode(Tree tree) {
        VariableTree node = (VariableTree) tree;
        if (node.simpleName().name().matches("ABC")) {
            context.reportIssue(this, node.simpleName(), "不能使用ABC作为变量名");
        }
    }
}
