使用 Sonar-Runner 注入外部参数

Inject external parameters with 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();
            }
        }

    }

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

获取 属性 值

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