2

私は SonarQube プラグイン開発の初心者です。技術部門の修復が、そのルールの問題ごとに次の式で与えられるルールを作成したいと思います: dept = constant_duration * エフォート与えられ、問題ごとに異なる場合、constant_durationがルールに指定されます。

次の RuleDefinition を作成できました。

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();
    }
}

次に、Sensor クラスで、次のような課題を作成しました。

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();

    // ...

    }

最後に、プラグイン クラスを介してすべてのクラスを登録し、Sonarの品質プロファイル用に SonarQube の GUI でルールを有効にします。

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

    @Override
    public List getExtensions() {
        return Arrays.asList(
                SodaClassCoverageMetric.class,
                SodaCoverageSensor.class,
                SodaRuleDefinition.class
        );
    }    
}

すべてが正常に動作し、コードが実行され (3 回確認しました)、ルールと課題が期待どおりに作成され、実行中にエラーもログ ファイルにも記録されませんでした。技術部門だけがユーザー インターフェイスに表示されません。同じタイプの他の問題を見つけましたが、問題DebtRemediationFunction.Type.LINEARなく動作しています。

これを乗り越える方法についての手がかり、助け、または推奨事項は非常に高く評価されています!

4

0 に答える 0