我使用Coverity扫描我的项目是否存在安全问题.
我想知道的是如何从缺陷提交后可用的分析结果中排除任何java测试(注意:集成和单元).
我确实使用maven来构建项目,并使用标志-Dmaven.skip.test = true排除了单元测试.
尽管这使得Coverity不进行扫描单元测试,但它仍然使扫描集成测试.
我项目中的所有集成测试都在文件标题中包含“Test”一词.因此,我开始查看Coverity中提供的过滤器部分.我当时尝试的是一个正则表达式(.*(!?(Test).*)$)但它没有用.似乎覆盖率支持两个匹配的字符(*和? – 见下图),而它似乎不支持任何负面的环顾.
有没有什么好方法可以轻松,干净的方式完成这项任务?
解决方法
由于Coverity依赖于您的Maven构建,因此您可以排除:
>通过添加-Dmaven.skip.test = true编译和执行单元测试(通过Surefire插件)和集成测试(通过Failsafe插件)
>通过-DskipTests执行单元测试和集成测试
>通过-DskipITs执行集成测试
相反,如果您在单独的Maven模块中进行集成测试,则可以通过配置文件直接将其从Maven构建中排除,如下例所示 – 请参阅要启动的聚合器的pom.xml和maven命令行的摘要:
<modules> <!-- remove 'my-it-module' from this list --> </modules> <profiles> <profile><id>build-it</id> <activation><activeByDefault>true</activeByDefault></activation> <modules><module>my-it-module</module></modules> </profile> </profiles>
然后mvn安装-P!build-it