sonar-plsql分析

package com.ubisec.test.plsql;

import com.ubisec.base.FileUtils;
import com.ubisec.base.NoOpFileLinesContextFactory;
import org.junit.Before;
import org.junit.Test;import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.fs.internal.TestInputFileBuilder;
import org.sonar.api.batch.rule.ActiveRules;
import org.sonar.api.batch.rule.internal.ActiveRulesBuilder;
import org.sonar.api.batch.rule.internal.NewActiveRule;
import org.sonar.api.batch.sensor.internal.SensorContextTester;
import org.sonar.api.batch.sensor.issue.Issue;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.issue.NoSonarFilter;
import org.sonar.api.rule.RuleKey;
import org.sonar.plsqlopen.PlSql;
import org.sonar.plsqlopen.PlSqlSquidSensor;
import org.sonar.plsqlopen.checks.UnusedVariableCheck;


import java.io.File;
import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
import java.util.Collection;

public class PlsqlCheckUnuseVarTest {

    private PlSqlSquidSensor sensor;
    private SensorContextTester context;

    @Before
    public void setup(){
        ActiveRulesBuilder activeRulesBuilder = new ActiveRulesBuilder();
activeRulesBuilder.addRule(new NewActiveRule.Builder()
                                                    .setRuleKey(RuleKey.of("plsql", "EmptyBlock"))
                                            .setName("Print Statement Usage")
                                                    .build());


activeRulesBuilder.addRule(new NewActiveRule.Builder()                                                    .setRuleKey(RuleKey.of("plsql",this.annotatedEngineKey(UnusedVariableCheck.class)))
       .build());

ActiveRules activeRules = activeRulesBuilder.build();
        context = SensorContextTester.create(new File("."));
        sensor = new PlSqlSquidSensor(activeRules, new MapSettings().asConfig(), new NoSonarFilter(), new NoOpFileLinesContextFactory(), null);
    }  

 @Test
    public void check(){
        context.fileSystem().add(this.getDefaultInputFile("C:\\hl-projects\\github\\sonar_go_scala_ruby_kotlin\\sonar_go_scala_ruby_kotlin\\src\\test\\resources\\plsql\\checks\\code.sql"));

context.fileSystem().add(this.getDefaultInputFile("C:\\hl-projects\\github\\sonar_go_scala_ruby_kotlin\\sonar_go_scala_ruby_kotlin\\src\\test\\resources\\plsql\\checks\\unused_variable.sql"));
      sensor.execute(context);
        Collection<Issue> issues = context.allIssues();
        System.out.println();
    }

public DefaultInputFile getDefaultInputFile(String relativePath){
        String content = FileUtils.fileContent(new File(relativePath), StandardCharsets.UTF_8);
        DefaultInputFile inputFile = new TestInputFileBuilder("key", relativePath)
                .setLanguage(PlSql.KEY)
                .setCharset(StandardCharsets.UTF_8)
                .initMetadata(content)
                .setModuleBaseDir(Paths.get(""))
                .build();
        return inputFile;
    }

            public String annotatedEngineKey(Class cls) {
        org.sonar.plugins.plsqlopen.api.annotations.Rule rule =(org.sonar.plugins.plsqlopen.api.annotations.Rule)cls.getAnnotation(org.sonar.plugins.plsqlopen.api.annotations.Rule.class);
        return rule.key();
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: org.sonarlint.eclipse.site-3.6是SonarLint插件的一个版本,该插件提供了在Eclipse集成开发环境中使用SonarLint工具进行代码分析和质量管理的功能。SonarLint是一个开源的静态代码分析工具,可帮助开发人员在开发过程中发现代码中的潜在问题,提高代码质量和可维护性。 在Eclipse集成开发环境中使用SonarLint工具可以帮助开发人员及时发现代码中的问题,包括潜在的缺陷、代码重复、安全漏洞等。同时,该工具还可以在代码编写时提供实时反馈,指出代码中存在的问题,帮助开发人员及时调整和优化代码,并可以与SonarQube进行集成,从而实现代码质量的全面管理。 在使用org.sonarlint.eclipse.site-3.6插件时,需要先安装Eclipse集成开发环境和Java运行时环境。然后,通过Eclipse插件市场或手动安装方式将插件添加到Eclipse中,并在工作区中启用SonarLint功能。接下来,可以配置SonarLint连接到SonarQube服务器,并选择要分析的项目、规则和规则集等。最后,可以开始使用SonarLint工具进行代码质量分析和管理。 总之,org.sonarlint.eclipse.site-3.6插件是SonarLint工具在Eclipse集成开发环境中的一个版本,提供了方便、高效的代码分析和质量管理功能,帮助开发人员提高代码质量和可维护性。 ### 回答2: org.sonarlint.eclipse.site-3.6是指SonarLint Eclipse插件的版本号为3.6的安装包。SonarLint是由SonarSource开发的插件,它可以与Eclipse集成,帮助开发人员在编写代码时及时发现潜在的质量问题,并提供相关的调试信息和建议。这个插件可以通过在开发环境内集成SonarQube或者SonarCloud服务来实现对代码的分析和检测,从而提高代码的质量和稳定性,同时可以有效地减少维护成本和时间。 SonarLint Eclipse插件版本3.6是该插件的更新版本,在该版本中加入了一些新的特性和功能,例如能兼容最新版本的Eclipse以及支持新的Java特性和规范等。此外,该版本还修复了一些缺陷和漏洞,提高了插件的稳定性和性能。 综上所述,org.sonarlint.eclipse.site-3.6是SonarLint Eclipse插件的版本号为3.6的安装包,该插件可以帮助开发人员提高代码的质量和稳定性,并提供相关的调试信息和建议,适用于需要集成代码检查和分析服务的开发环境。 ### 回答3: org.sonarlint.eclipse.site-3.6是Eclipse SonarLint插件的一个版本。SonarLint是一个轻量级的静态代码分析工具,可以帮助开发人员在开发过程中发现并修复代码中的缺陷和漏洞,提高代码质量和可维护性。该插件为Eclipse提供了SonarLint的集成支持,使得开发人员能够更加方便地使用SonarLint来对他们的代码进行分析和优化。 该插件的版本号为3.6,表明这是该插件的第三个大版本且为第六个次版本。该版本可能包括了一些新的功能、修复了一些已知的问题,或者改进了插件的性能和稳定性。开发者可以根据自己的要求选择使用这个版本或其他版本。相比之下,该版本最显著的特点可能就是它的稳定性和兼容性。 总的来说,org.sonarlint.eclipse.site-3.6是Eclipse SonarLint插件的一个版本,为开发者提供了静态代码分析和优化的集成支持,并且具备稳定性和兼容性等方面的优点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值