2015-10-06 3 views
1

Я хочу написать свои собственные правила сонара в Java. У нас есть требование добавить несколько правил безопасности в SonarQube. Прежде чем попробовать это, я должен сначала попробовать базовое правило кодирования. Для этого я следую приведенной ниже ссылке: https://github.com/SonarSource/sonar-java/tree/master/java-checks/srcПравила кодирования сонара в Java

Я попытался добавить образцы правил, упомянутых в примерах сонара, которые отлично работали для меня.

Теперь я попытался добавить уже существующее правило в github , создав новый java-файл в той же папке.

Здесь я добавил, https://github.com/SonarSource/sonar-java/blob/master/java-checks/src/main/java/org/sonar/java/checks/DuplicateConditionIfElseIfCheck.java код в моей основной папке. Я также добавил соответствующие java-файлы в тестовую папку.

Но я получаю следующее сообщение об ошибке, когда я компилирую с помощью -> МВН компилировать

C:\Sonar\sonar-examples-master\plugins\java-custom-rules>mvn compile 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Java Custom Rules 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- sonar-packaging-maven-plugin:1.12.1:check-dependencies (default-check 
-dependencies) @ java-custom-rules --- 
[INFO] 
[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ java-custo 
m-rules --- 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, 
i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory C:\Sonar\sonar-examples-master\plugin 
s\java-custom-rules\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ java-custom-rul 
es --- 
[INFO] Changes detected - recompiling the module! 
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. b 
uild is platform dependent! 
[INFO] Compiling 9 source files to C:\Sonar\sonar-examples-master\plugins\java-c 
ustom-rules\target\classes 
[INFO] ------------------------------------------------------------- 
[WARNING] COMPILATION WARNING : 
[INFO] ------------------------------------------------------------- 
[WARNING] /C:/Sonar/sonar-examples-master/plugins/java-custom-rules/src/main/jav 
a/org/sonar/samples/java/MyJavaFileCheckRegistrar.java: C:\Sonar\sonar-examples- 
master\plugins\java-custom-rules\src\main\java\org\sonar\samples\java\MyJavaFile 
CheckRegistrar.java uses unchecked or unsafe operations. 
[WARNING] /C:/Sonar/sonar-examples-master/plugins/java-custom-rules/src/main/jav 
a/org/sonar/samples/java/MyJavaFileCheckRegistrar.java: Recompile with -Xlint:un 
checked for details. 
[INFO] 2 warnings 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /C:/Sonar/sonar-examples-master/plugins/java-custom-rules/src/main/java/ 
org/sonar/samples/java/DuplicateConditionIfElseIfCheck.java:[50,54] cannot find 
symbol 
    symbol: class Location 
    location: interface org.sonar.plugins.java.api.JavaFileScannerContext 
[INFO] 1 error 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 13.667 s 
[INFO] Finished at: 2015-10-06T09:55:20+03:00 
[INFO] Final Memory: 15M/37M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3. 
1:compile (default-compile) on project java-custom-rules: Compilation failure 
[ERROR] /C:/Sonar/sonar-examples-master/plugins/java-custom-rules/src/main/java/ 
org/sonar/samples/java/DuplicateConditionIfElseIfCheck.java:[50,54] cannot find 
symbol 
[ERROR] symbol: class Location 
[ERROR] location: interface org.sonar.plugins.java.api.JavaFileScannerContext 

Мне нужно добавить любые другие файлы фляги ли? Пожалуйста, помогите мне.

Спасибо заранее, Shruthi

+0

Пожалуйста следуйте примеру плагина пользовательских правил: https://github.com/SonarSource/sonar-examples/tree/master/plugins/java-custom-rules – benzonico

+0

У меня уже есть эти примеры, и это сработало для меня. Теперь я пытаюсь добавить любое из правил, представленных в https://github.com/SonarSource/sonar-java/tree/master/java-checks/src/main/java/org/sonar/java –

+0

Если я попытался добавить тот же код, я получаю вышеуказанную ошибку –

ответ

0

Пожалуйста, проверьте эту зависимость в вашем .m2 репо. Следуя от pom.xml

<dependency> 
     <groupId>org.codehaus.sonar</groupId> 
     <artifactId>sonar-java-api</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.sonar</groupId> 
     <artifactId>sonar-plugin-api</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.collections</groupId> 
     <artifactId>google-collections</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
+0

У меня нет сонара-java-api в папке моего репозитория. Как добавить его? –

+0

попробуйте удалить 'scope' в pom.xml. В идеале он должен загружаться из центрального хранилища maven. И попробуйте другие команды, такие как 'mvn install' или' mvn package'. – bsingh

+0

и репозиторий проекта 'sonar-java' в github. «JavaFileScannerContext» присутствует там [link] (https://github.com/SonarSource/sonar-java/tree/master/java-squid/src/main/java/org/sonar/plugins/java/api). Пожалуйста, включите его или загрузите банку. – bsingh

0

Я обнаружил, что при расширении существующей плагин (например, на Java-плагин) путь к классам оригинального плагин не был включен. Для того, чтобы включить этот путь к классам, вы должны установить basePlugin от конфигурации гидролокатора-расфасовки-Maven-плагин, как это:

<plugin> 
     <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> 
     <artifactId>sonar-packaging-maven-plugin</artifactId> 
     <version>1.15</version> 
     <extensions>true</extensions> 
     <configuration> 
       <pluginClass>your.sonar.plugin</pluginClass> 
       <pluginDescription>My SonarQube plugin</pluginDescription> 
       <basePlugin>java</basePlugin> 
      </configuration> 
     </plugin> 

Вы можете проверить мой SonarQube плагин на https://github.com/SPeeSimon/SonarQube-plugins

Смежные вопросы