(Sonarqube) (Custom Plugin) (get SonarQube Session)
(Sonarqube) (Custom Plugin) (get SonarQube Session)
尊敬的 SonarQube 开发人员,
我想在 "Initializer" 阶段获取 SonarQube session,并在会话中放置一些对象变量,以便在分析我的自定义规则时恢复它们.
这样我就不会在同一个分析会话中多次计算这些对象。
可能吗?
我该怎么做?
非常感谢您的建议。
沃格宁
我已经通过在 ProjectBuilder 阶段使用 Java 系统属性解决了这个问题,方法是:
ParametresProjet paramProj = parseFichierPom(projDef.getKeyWithBranch());
if (paramProj != null) {
Properties properties = System.getProperties();
// sauvegarde des objets dans la session
properties.put(PROPRIETES_DU_POM, paramProj );
Boolean isException = ProjetControleur.isProjetEnException(paramProj.getGroupId(), paramProj.getArtifactId());
properties.put(PROJET_EN_EXCEPTION, isException);
System.setProperties(properties);
}
而且我可以在 Java 分析期间进一步恢复这些属性,这样:
private static Boolean isException;
/** static initializer */
static {
isException = (Boolean) System.getProperties().get(PROJET_EN_EXCEPTION);
}
这解决了我的问题,但我不知道在 SonarQube 的会话中放置和恢复对象是否是一个好方法。
你怎么看?
沃格宁
尊敬的 SonarQube 开发人员,
我想在 "Initializer" 阶段获取 SonarQube session,并在会话中放置一些对象变量,以便在分析我的自定义规则时恢复它们. 这样我就不会在同一个分析会话中多次计算这些对象。
可能吗? 我该怎么做?
非常感谢您的建议。
沃格宁
我已经通过在 ProjectBuilder 阶段使用 Java 系统属性解决了这个问题,方法是:
ParametresProjet paramProj = parseFichierPom(projDef.getKeyWithBranch());
if (paramProj != null) {
Properties properties = System.getProperties();
// sauvegarde des objets dans la session
properties.put(PROPRIETES_DU_POM, paramProj );
Boolean isException = ProjetControleur.isProjetEnException(paramProj.getGroupId(), paramProj.getArtifactId());
properties.put(PROJET_EN_EXCEPTION, isException);
System.setProperties(properties);
}
而且我可以在 Java 分析期间进一步恢复这些属性,这样:
private static Boolean isException;
/** static initializer */
static {
isException = (Boolean) System.getProperties().get(PROJET_EN_EXCEPTION);
}
这解决了我的问题,但我不知道在 SonarQube 的会话中放置和恢复对象是否是一个好方法。 你怎么看?
沃格宁