使用 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() 返回)
我找了很久,还没找到答案。 以下问题是:我想将外部信息传递给我的声纳运行器,例如配置文件。
我的第一个问题是知道是否可以这样做?
例如,我想构建一个项目,我想传入外部参数数据库凭据:
# 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() 返回)