我对Sonar比较陌生 - 尤其是编写自己的Sonar插件。经过一些成功的试验,我现在陷入困境。我写了一个简单的插件,只能将源文件(* .abap -Files)传输到声纳服务器。
在我的插件中我有一个AbapLangauge(从AbstractLangauge扩展)
package sonarplugin;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.resources.AbstractLanguage;
public class AbapLanguage extends AbstractLanguage {
public static final String DEFAULT_SOURCE_SUFFIXES = "abap";
public static final String KEY = "sap";
private String[] fileSuffixes;
private static final Logger LOG = LoggerFactory.getLogger(AbapLanguage.class);
public AbapLanguage() {
super(KEY, "sap");
LOG.info("SETTING LANGUAGE TO SAP: " + KEY);
fileSuffixes = createStringArray(null, DEFAULT_SOURCE_SUFFIXES);
}
public String[] getFileSuffixes() {
return fileSuffixes;
}
private String[] createStringArray(String[] values, String defaultValues) {
if (values == null || values.length == 0) {
return StringUtils.split(defaultValues, ",");
}
return values;
}
}
我还有一个SourceImporter
package sonarplugin;
import org.sonar.api.batch.AbstractSourceImporter;
public final class AbapSourceImporter extends AbstractSourceImporter {
public AbapSourceImporter(AbapLanguage language) {
super(language);
}
}
我将这两个类注册为扩展点。 在我的测试项目中,我想用sonar-runner分析我在sonar-project.properties中设置
sonar.language=sap
但是当我启动声纳转轮时,我得到了以下错误:
15:11:36.148 INFO - ------------- Executing Project Scan
15:11:36.386 INFO - ABAPIMPORTGERPLUGIN has just started.
15:11:36.924 INFO - Install JDBC driver
15:11:36.929 INFO - Apply project exclusions
15:11:36.937 WARN - H2 database should be used for evaluation purpose only
15:11:36.937 INFO - Create JDBC datasource for jdbc:h2:tcp://localhost:9092/sonar
15:11:37.051 INFO - Initializing Hibernate
15:11:42.669 INFO - ------------- Inspecting MeinTestprojekt
15:11:42.683 INFO - Load module settings
15:11:43.062 INFO - ABAPIMPORTGERPLUGIN has just started.
15:11:43.244 INFO - SETTING LANGUAGE TO SAP: sap
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 15.544s
INFO: Final Memory: 10M/158M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must install a plugin that supports the language 'sap'
有人能帮助我吗?为什么sonar-runner说没有支持语言'sap'的插件?我的插件配置不正确吗?
先谢谢了 哈德
答案 0 :(得分:1)
在您的具体情况下,问题来自于您没有为新语言定义任何规则存储库(甚至是空存的规则存储库),因此Sonar认为您的新语言不受支持。
更一般地说,最好的选择是看一下我们为Sonar开发的一些开源语言插件。例如,您可以去查看Javascript plugin。
答案 1 :(得分:1)
可能出现此错误的更多原因:
答案 2 :(得分:0)
刚刚完成同样的过程,似乎需要的粗略事物(并通过插件的getExtensions()
方法做出宣传)是:
org.sonar.api.resources.AbstractLanguage
的子类 - 您的构造函数对super的调用提供语言代码及其名称作为两个参数org.sonar.api.server.rule.RulesDefinition
org.sonar.api.profiles..ProfileDefinition
的子类,返回带有您的语言代码的RulesProfile对象org.sonar.api.batch.Sensor
实现