天天看点

cobertura-maven-plugin遇到java lamda表达式

想必大家都使用过cobertura-maven-plugin插件来实现代码覆盖率的统计。当升级到java8之后,如果项目的代码中使用了java的lamda表达式(类似 list.stream.foreach( i -> System.out.println(i))等,当执行 mvn clean cobertura:cobertura 命令的时候,会出现如下如下信息:

[WARN] JavaNCSS got an error while parsing the java file
Encountered " ">" "> "" at line
Was expecting one of:
"assert" ...
"boolean" ...
"byte" ...
           

这个问题导致到原因是什么呢?

(The root cause of this issue is that the NCSS library ( https://github.com/codehaus/javancss ) that Cobertura uses is not able to handle Java8 syntax)。

暂时没有什么好的解决方法,只能屏蔽一些错误信息。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        **<quiet>true</quiet>**
        <formats>
            <format>xml</format>
        </formats>
        <instrumentation>
            **<ignoreTrivial>true</ignoreTrivial>**
        </instrumentation>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
                <goals>
                    <goal>cobertura</goal>
                </goals>
        </execution>
    </executions>
</plugin>