Java 如何从插件中为SonarQube 5.3中的规则指定线性DebtRemidationFunction?

Java 如何从插件中为SonarQube 5.3中的规则指定线性DebtRemidationFunction?,java,plugins,sonarqube,sonarqube5.3,technical-debt,Java,Plugins,Sonarqube,Sonarqube5.3,Technical Debt,我是SonarQube插件开发的新手。我想创建一个规则,其中技术部门的补救措施针对该规则的每个问题都给出了以下公式:dept=constant_duration*efforce其中efforce是给定的,并且每个问题都不同,则为该规则指定了constant_duration 我成功创建了以下规则定义: public class SodaRuleDefinition implements RulesDefinition { public static final String REPO_K

我是SonarQube插件开发的新手。我想创建一个规则,其中技术部门的补救措施针对该规则的每个问题都给出了以下公式:dept=constant_duration*efforce其中efforce是给定的,并且每个问题都不同,则为该规则指定了constant_duration

我成功创建了以下规则定义:

public class SodaRuleDefinition
implements RulesDefinition
{
    public static final String REPO_KEY = "soda";
    public static final String SODA_METHOD_COVERAGE_KEY = "soda-method-coverage";

    @Override
    public void define(Context context) {
        NewRepository repository = context.createRepository(REPO_KEY, Java.KEY);
        repository.setName("SoDA");
        repository.createRule(SODA_METHOD_COVERAGE_KEY)
                .setName("SoDA aggregated method coverage")
                .setMarkdownDescription("foo")
                .setDebtSubCharacteristic("UNIT_LEVEL")
                .setDebtRemediationFunction(
                    new DefaultDebtRemediationFunction(
                        DebtRemediationFunction.Type.LINEAR, "1h", null));
        repository.done();
    }
}
然后在传感器类中,我创建了如下问题:

public class SodaCoverageSensor
implements org.sonar.api.batch.Sensor{

// ...

    @Override
    public void analyse(Project project, SensorContext sc) {

    // ...

    sc.newIssue()
        .at(new DefaultIssueLocation()
            .on(new DefaultInputFile(project.getKey(), resource.getPath()))
            .message(String.format("Coverage (%f) is lower than %f.", entry.getValue(), limit)))
        .effortToFix(1.0)
        .forRule(ruleKey)
        .save();

    // ...

    }
最后,我通过一个插件类注册了我的所有类,并在SonarQube的GUI上为Sonar way quality profile激活了我的规则

public class SonarQubePlugin
extends org.sonar.api.SonarPlugin{

    @Override
    public List getExtensions() {
        return Arrays.asList(
                SodaClassCoverageMetric.class,
                SodaCoverageSensor.class,
                SodaRuleDefinition.class
        );
    }    
}
一切正常,我的代码已执行(我进行了三次检查),规则和问题按预期创建,执行过程中没有错误,日志文件中也没有只有技术部门没有显示在用户界面上我发现了与相同的
debertemeditionfunction.Type.LINEAR
类型的其他问题,这些问题都很正常


任何关于如何克服这一问题的线索、帮助或建议都将不胜感激

您能否执行并检查is是否包含字段“DefaultDebtremfncoff=LINEAR”和“DefaultDebtremfncoff=1h”?@JulienL.-SonarSourceTeam是的,响应中当然不包含这些字段。我得到以下输出:“规则”:[{“key”:“soda:soda方法覆盖率”,“repo”:“soda”,“name”:“soda聚合方法覆盖率”,“createdAt”:“2016-03-08T10:25:26+0100”,“htmlDesc”:“foo”,“mdDesc”:“foo”,“severity”:“MAJOR”,“status”:“READY”,“isTemplate”:false,“tags”:[],“sysTags”:[],“lang”:“java”,“langName”:“java”,“params”:[],“debtOverloaded”:false}