首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SonarQube 5.6在用声呐插件api版本4.5.2开发的插件中执行解码器吗?

SonarQube 5.6在用声呐插件api版本4.5.2开发的插件中执行解码器吗?
EN

Stack Overflow用户
提问于 2016-11-17 19:41:44
回答 1查看 103关注 0票数 1

我安装了sonarqube5.6,并下载了C#插件。

我决定扩展C#插件,因此继续下载已安装的插件的代码(5.3.2版)。

C#插件项目引用了声呐插件-api版本4.5.2

因此,我添加了需要为项目级别计算的新指标,并在文档之后创建了一个装潢工

代码语言:javascript
复制
public class CSharpMyDecorator implements Decorator{
    private static final Logger LOG = LoggerFactory.getLogger(CSharpMyDecorator.class);

    @Override
    public boolean shouldExecuteOnProject(Project arg0) {
        // TODO Auto-generated method stub
        return true;
    }

    @Override
    public void decorate(Resource resource, DecoratorContext context) {

        LOG.info(resource.getName() + " Is Project: " + Scopes.isProject(resource) +" Is project not Module:" + Qualifiers.isProject(resource, false));


        if (Scopes.isProject(resource) && Qualifiers.isProject(resource, false)) {
            double files = 0d;
            double percentage = 0d;
            LOG.info("files: "+context.getMeasure(CoreMetrics.FILES).getValue());

            for (Measure measure : context.getChildrenMeasures(MyMetrics.FILES_DONT_PASS_FUNCTION_THRESHOLD)) {
                files += measure.getValue();
            }

            percentage = files / context.getMeasure(CoreMetrics.FILES).getValue();
            context.saveMeasure(MyMetrics.PERC_FILES_DONT_PASS_FUNCTION_THRESHOLD, percentage);
        }

    }

}

我在插件中添加了类:

代码语言:javascript
复制
public class CSharpPlugin extends SonarPlugin {

  public static final String LANGUAGE_KEY = "cs";
  public static final String LANGUAGE_NAME = "C#";

  public static final String FILE_SUFFIXES_KEY = "sonar.cs.file.suffixes";
  public static final String FILE_SUFFIXES_DEFVALUE = ".cs";

  public static final String CSHARP_WAY_PROFILE = "Sonar way";

  public static final String REPOSITORY_KEY = "csharpsquid";
  public static final String REPOSITORY_NAME = "SonarQube";

  public static final String IGNORE_HEADER_COMMENTS = "sonar.cs.ignoreHeaderComments";
  public static final String NUMBER_FUNCTION_THRESHOLD = "sonar.cs.numberFunctionThreshold";
  public static final String NUMBER_LOC_THRESHOLD = "sonar.cs.numberLocThreshold";

  @Override
  public List getExtensions() {
    ImmutableList.Builder builder = ImmutableList.builder();

    builder.add(
      CSharp.class,
      CSharpSonarRulesDefinition.class,
      CSharpSonarWayProfile.class,
      CSharpCommonRulesEngine.class,
      CSharpCommonRulesDecorator.class,
      CSharpSourceCodeColorizer.class,
      RuleRunnerExtractor.class,
      CSharpSensor.class,
      CSharpCPDMapping.class,
      SonarLintProfileExporter.class,
      SonarLintFakeProfileImporter.class,
      RoslynProfileExporter.class,
      MyMetrics.class,
      CSharpMyDecorator.class
      );

    builder.addAll(CSharpFxCopProvider.extensions());
    builder.addAll(CSharpCodeCoverageProvider.extensions());
    builder.addAll(CSharpUnitTestResultsProvider.extensions());
    builder.addAll(CSharpMsBuildIntegrationProvider.extensions());
    builder.addAll(RoslynProfileExporter.sonarLintRepositoryProperties());

    return builder.build();
  }

}

当我执行分析时,既没有创建度量,也没有存储度量。

查看生成的日志(我启用了详细选项),我没有发现任何对Decorator执行的引用。甚至连从解码器中的代码中期望的日志条目都没有。

我使用的是MSBuild.SonarQube.Runner.exe版本2.0

为什么不叫装饰师?这是SonarQube版本的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 09:16:07

扩展点装饰器在5.2版中被删除,因为它不是为5.x系列中最想要的特性之一而设计的:将扫描器与数据库隔离。

更多细节可以在http://docs.sonarqube.org/display/DEV/API+Changeshttps://groups.google.com/forum/#!forum/sonarqube组中找到。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40663669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档