使用Sonar-Runner注入外部参数

时间:2015-12-14 10:52:18

标签: sonarqube sonar-runner

我已经搜索了很长时间但我还没有找到答案。 以下问题是:我想将外部信息传递给我的声纳运行器,例如配置文件。

我的第一个问题是要知道是否可以这样做?

例如,我想构建一个项目,我想传递外部参数数据库凭证:

# Required metadata
sonar.projectKey=javascript_spine
sonar.projectName=Simple Spine js
sonar.projectVersion=1.1

# For example database parameters
sonar.dbUserName = "..."
sonar.dbPassword = "xxxx"
sonar.hostName = "ip"

我如何在插件中获取参数:

@Properties(@Property(key = "my.property", name = "My property", defaultValue = "20"))
public class MyJavaRulesPlugin extends SonarPlugin {

    private PrintWriter ecri;

    public MyJavaRulesPlugin(Settings settings) {

        if(settings != null) {
            String value = settings.getString("my.property"); // default value is 20
            System.out.println("La valeur de value est :" + value);
            // Ecrire dans un fichier texte sur le Desktop
            try {
                ecri = new PrintWriter(new FileWriter("/home/michael/test.txt"));
                ecri.print("La valeur de value est :" + value);
                ecri.flush();
                ecri.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

1 个答案:

答案 0 :(得分:1)

http://docs.sonarqube.org/display/DEV/Coding+a+Plugin#CodingaPlugin-HowtoGetConfiguration中所述,插件可以通过Java组件org.sonar.api.config.Settings获取属性值。

请注意,不应该从org.sonar.api.SonarPlugin实例使用设置(生命周期原因,设置稍后初始化),但是来自扩展(由SonarPlugin#getExtensions()返回)