Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java插件-添加自定义规则_Java_Sonarqube - Fatal编程技术网

Java插件-添加自定义规则

Java插件-添加自定义规则,java,sonarqube,Java,Sonarqube,如本文所述,我遵循了所有步骤,并在/checks文件夹中添加了TestRule.java 但是当我编译这个插件代码时,我得到了以下错误: 17:02:52.614 [main] INFO o.s.s.j.c.SecurityAnnotationMandatoryCheck - implements Interface : Second Interface 17:02:52.614 [main] INFO o.s.s.j.c.SecurityAnnotationMandatoryCheck -

如本文所述,我遵循了所有步骤,并在/checks文件夹中添加了TestRule.java

但是当我编译这个插件代码时,我得到了以下错误:

17:02:52.614 [main] INFO  o.s.s.j.c.SecurityAnnotationMandatoryCheck - implements Interface : Second
Interface
17:02:52.614 [main] INFO  o.s.s.j.c.SecurityAnnotationMandatoryCheck - Method Name MySecurityAnnotat
ion
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.073 sec - in org.sonar.samples.jav
a.checks.SecurityAnnotationMandatoryCheckTest
Running org.sonar.samples.java.checks.TestRuleTests
17:02:52.617 [Report about progress of Java AST analyzer] INFO  org.sonar.squidbridge.ProgressReport
 - 1/1 source files have been analyzed
Executing *****************************TestRULE...........17:02:52.673 [main] INFO  org.sonar.squidb
ridge.ProgressReport - 1 source files to be analyzed
17:02:52.679 [main] DEBUG o.s.java.bytecode.ClassLoaderBuilder - ----- Classpath analyzed by Squid:
17:02:52.680 [main] DEBUG o.s.java.bytecode.ClassLoaderBuilder - C:\Users\dev\JavaPlugin\sonar-examples-master\sonar-examples-master\plugins\java-custom-rules\target\test-jars\commo
ns-collections4-4.0.jar
17:02:52.680 [main] DEBUG o.s.java.bytecode.ClassLoaderBuilder - C:\Users\dev\Jav
aPlugin\sonar-examples-master\sonar-examples-master\plugins\java-custom-rules\target\test-classes
17:02:52.680 [main] DEBUG o.s.java.bytecode.ClassLoaderBuilder - -----
17:02:52.688 [main] DEBUG o.s.java.resolve.BytecodeCompleter - Completing symbol : Object
17:02:52.691 [Report about progress of Java AST analyzer] INFO  org.sonar.squidbridge.ProgressReport
 - 1/1 source files have been analyzed
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.04 sec <<< FAILURE! - in org.sonar
.samples.java.checks.TestRuleTests
detected(org.sonar.samples.java.checks.TestRuleTests)  Time elapsed: 0.033 sec  <<< ERROR!
java.lang.IllegalStateException: At least one issue expected
        at org.sonar.samples.java.checks.TestRuleTests.detected(TestRuleTests.java:19)


Results :

Tests in error:
  TestRuleTests.detected:19 ╗ IllegalState At least one issue expected

Tests run: 8, Failures: 0, Errors: 1, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.750 s
[INFO] Finished at: 2015-12-04T17:02:53+05:30
[INFO] Final Memory: 28M/313M
[INFO] ------------------------------------------------------------------------

如何添加问题?

如果您看到错误:您正在测试的文件中预期会出现问题

因此,在“src/test/files/TestRule.java”中,您的规则应该提出一个问题,并使用测试类中注释中指定的注释://Noncompliant来检查该问题


如果您的检查完全没有问题,那么您应该使用方法
verifyNoIssue
来避免错误。

您是否确实阅读了测试失败的测试文件中的注释?javacheckervifier.verify(“src/test/files/TestRule.java”,check);这一行导致错误。。我不明白为什么。。请提供一些投入
import org.junit.Test;
import org.sonar.java.checks.verifier.JavaCheckVerifier;

import java.lang.System;

public class TestRuleTests {

    TestRule check = new TestRule();
    //check.max=100;

    @Test
    public void detected() {
        // Verifies that the check will raise the adequate issues with the expected message.
        // In the test file, lines which should raise an issue have been commented out
        // by using the following syntax: "// Noncompliant {{EXPECTED_MESSAGE}}"
        System.out.print("Executing *****************************TestRULE...........");
        JavaCheckVerifier.verify("src/test/files/TestRule.java", check); //Line number 19,this line is indicated in error
        System.out.print("After Executing *****************************TestRULE...........");
    }
}