2

私はソナーに比較的慣れていません。特に、独自のソナープラグインを作成するのは初めてです。いくつかの成功した試行の後、私は行き詰まりました。ソースファイル (*.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);
}
}

この 2 つのクラスを拡張ポイントとして登録しました。sonar-project.properties で設定した sonar-runner で分析したい私のテストプロジェクトで

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」をサポートするプラグインがないと言うのはなぜですか? プラグインが正しく構成されていませんか?

高度なベルンハルトに感謝

4

3 に答える 3

1

特定のケースでは、問題は、新しい言語のルール リポジトリ (空であっても) を定義していないという事実に起因するため、Sonar は新しい言語がサポートされていないと考えます。

より一般的には、Sonar 用に開発されたオープンソース言語プラグインを確認するのが最善の方法です。たとえば、Javascript プラグインを参照してください。

于 2013-04-17T15:00:31.090 に答える
0

これと同じプロセスを経て、必要と思われる (そしてプラグインのgetExtensions()メソッドによって宣伝されている) 大まかなセットは次のとおりです。

  • -のサブクラスorg.sonar.api.resources.AbstractLanguage- スーパーへのコンストラクターの呼び出しは、言語コードとその名前を 2 つのパラメーターとして提供します
  • の実装org.sonar.api.server.rule.RulesDefinition
  • org.sonar.api.profiles..ProfileDefinition言語化されたコードが参照された RulesProfile オブジェクトを返すのサブクラス
  • さらに、プラグインが実際に有用な作業を行うために必要な他の拡張ポイントの実装 - おそらくorg.sonar.api.batch.Sensor少なくとも実装
于 2014-11-16T19:44:28.213 に答える