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

import org.sonar.plugins.java.api.CheckRegistrar;
import org.sonar.plugins.java.api.JavaCheck;
import org.sonarsource.api.sonarlint.SonarLintSide;

import java.util.List;

/**
 * 负责将java规则检查器注册到SonarQube中
 *
 * @author GuoXin
 * @date 2024/1/6
 */
@SonarLintSide
public class JavaFileCheckRegistrar implements CheckRegistrar {
    /**
     * 注册将用于在分析期间实例化检查的类。
     */
    @Override
    public void register(RegistrarContext registrarContext) {
        // 调用 registerClassesForRepository 以将类与正确的存储库密钥相关联
        registrarContext.registerClassesForRepository(JavaSecurityDesignRulesRepository.REPOSITORY_KEY, checkClasses(), testCheckClasses());
    }

    /**
     * 列出插件提供的所有主检查器
     */
    public static List<Class<? extends JavaCheck>> checkClasses() {
        return RulesList.getJavaChecks();
    }

    /**
     * 列出插件提供的所有测试检查器
     */
    public static List<Class<? extends JavaCheck>> testCheckClasses() {
        return RulesList.getJavaTestChecks();
    }
}
