Java Sonarcube未涵盖主数据集的代码

Java Sonarcube未涵盖主数据集的代码,java,junit,sonarqube,code-coverage,main,Java,Junit,Sonarqube,Code Coverage,Main,嗨,我的代码覆盖工具是声纳。我有如下简单的主要方法:- public class MAIN { public static void main(String[] args) { //System.setProperty("hadoop.home.dir", "C:\\software\\winutils"); //args[0]:- location of the input file args[1]:- ingest date args[2

嗨,我的代码覆盖工具是声纳。我有如下简单的主要方法:-

public class MAIN {

    public static void main(String[] args) 
    {
        //System.setProperty("hadoop.home.dir", "C:\\software\\winutils");

        //args[0]:- location of the input file args[1]:- ingest date args[2]:- source
        //args[3]:-location of the output file args[4]:-location of the Error file
        //args[5]:-Type of the input file args[6]:-Type of the output file
        String input = args[0];
        String ingestDate = args[1];
        String source=args[2];
        String output=args[3];
        String error=args[4];
        String inputFileType=args[5];
        String outputType=args[6];
    }

}
这方面的测试级别为:-

 public class MyTest {

    private String inputFilePath;
    private String inputFileType;
    private String ingestDate;
    private String source;
    private String outputPath;
    private String errorPath;
    public Main driver;

    @Test(expected=IndexOutOfBoundsException.class)
    public void testMainIncorrectArgs() throws IOException{
        //String[] args = {inputFilePath, inputFileType, ingestDate, source, outputPath, errorPath};
        driver = new MAIN();
        driver.main(new String[]{inputFilePath, inputFileType, ingestDate, source, outputPath, errorPath});
    }

}
当我进行代码覆盖时,sonarcube工具不包括主类代码覆盖。
我已尝试使用PowerMockito反射Api调用该方法,但结果是相同的。

如果我理解正确,您正在使用SonarQube进行静态代码分析,并查找测试所涵盖的代码

据我所知,SonarQube本身并不生成代码覆盖率,而是使用外部工具来完成这项工作。最常见的是,它还有一个maven插件,您可以将其包含在构建中。 生成的覆盖率报告可以包含在您的QUBE分析中。 现在,您的代码覆盖率应该为零,因为SonarQube本身不进行分析


如果您需要示例或更多信息,请随意编辑您的问题。

我得到了答案。所以Sonar在内部使用jacoco库来覆盖代码。 在我的主方法中,我从args声明变量:-

String input = args[0];
String ingestDate = args[1];
String source=args[2];
String output=args[3];
String error=args[4];
String inputFileType=args[5];
String outputType=args[6];
因此,根据jacoco文件,这些代码不包括在代码覆盖范围内。 最后,我使用pojo修改了代码:-

 String input = setInput(args[0]);
    String ingestDate = setInput(args[1]);
    String source    = setInput(args[2]);
    String output    = setInput(args[3]);
    String error     = setInput(args[4]);
    String inputFileType= setInput(args[5]);
    String outputType = setInput(args[6]);

覆盖了我的声纳

为什么要这样做
driver=newmemberEligibilityetlSparkDriver()而非
driver=newmain()@piy26已编辑请检查是否可以插入一些实际执行的行。类似于
System.out.println(inputFilePath、inputFileType、ingestDate、source、outputPath、errorPath)
1)您知道您的
MyTest
类中的单元测试是否正在实际执行吗?2) 您不需要实例化一个类来执行一个静态方法…….是的,实际上所有测试都在本地执行,但是静态类代码的代码覆盖率没有发生。除了此文件代码,所有测试用例的代码都被覆盖。总代码覆盖率为60%,但不包括主要方法代码覆盖率。