Detekt排除设置未生效:如何排除samples文件夹?
解决Detekt无法排除samples文件夹的问题
你的配置失效的核心原因是:规则级别的includes范围覆盖了samples文件夹,且excludes的优先级或路径匹配未生效。以下是几种可行的解决方法:
方法1:全局排除(最可靠)
在Detekt配置文件的顶层detekt节点下设置全局排除,这样所有规则都会跳过samples文件夹,无需在每个规则里重复配置:
detekt: # 保留其他全局配置项 excludes: - '**/rd/compose/samples/**' # 规则配置可保留includes,无需再单独写excludes UndocumentedPublicClass: active: true includes: &composeComponent - '**/rd/compose/**' UndocumentedPublicFunction: active: true includes: *composeComponent OutdatedDocumentation: active: true includes: *composeComponent allowParamOnConstructorProperties: true
方法2:修正规则级的路径匹配
如果必须在规则级别设置排除,调整路径写法确保准确匹配,同时规避includes与excludes的范围冲突:
- 将excludes路径改为精确到Kotlin文件的匹配:
'**/rd/compose/samples/**/*.kt' - 或者修改includes为否定samples的模式(部分Detekt版本支持):
'**/rd/compose/**/!samples/**'
修改后的规则示例:
UndocumentedPublicClass: active: true excludes: &samples - '**/rd/compose/samples/**/*.kt' includes: &composeComponent - '**/rd/compose/**' # 其他规则配置同理
方法3:检查路径匹配准确性
- 确认项目中samples文件夹的实际路径和配置的
**/rd/compose/samples/**完全一致,排查是否存在大小写差异、嵌套层级不符的情况 - 避免includes的范围过于宽泛导致excludes无法精准覆盖,比如includes如果包含了samples的父目录,excludes必须明确指向samples下的所有文件
内容的提问来源于stack exchange,提问作者Rulogarcillan
相关产品推荐
相关产品推荐

