You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Scala类中的方法排除在Scoverage覆盖率报告之外?

在Scala Play应用中用Scoverage排除特定方法的方案

有两种常用方式可以实现Scoverage覆盖率报告排除指定方法:

一、通过注解标记排除(类似Jacoco的@Generated)

Scoverage支持识别特定注解来排除被标记的方法,操作步骤如下:

  • 引入javax.annotation.Generated注解(也可以自定义专属注解)
  • 在需要排除的方法上添加该注解
  • 在build.sbt中配置Scoverage识别此注解

示例代码:

import javax.annotation.Generated

class TestClass {
    @Generated
    def methodN = {} 
}

对应的build.sbt配置:

scalacOptions += "-P:scoverage:excludeAnnotation:javax.annotation.Generated"

如果使用自定义注解(比如@ExcludeFromCoverage),只需将配置中的注解全限定名替换为自定义注解的路径即可。

二、直接在build.sbt中配置排除特定方法

你可以通过scalacOptions直接指定要排除的方法,格式为-P:scoverage:excludeMethod:全限定方法名,多个方法可通过逗号分隔或添加多条配置:

示例配置:

// 排除单个方法
scalacOptions += "-P:scoverage:excludeMethod:TestClass.methodN"

// 同时排除多个方法
scalacOptions += "-P:scoverage:excludeMethod:TestClass.methodN,TestClass.methodX"

注意:如果类属于某个包,方法名需要带上完整包路径,比如com.yourproject.TestClass.methodN。


内容的提问来源于stack exchange,提问作者Sameer Mirji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:06:38