Bash调用xcc时为--exclude-packages传多值报错如何解决
问题根因
你遇到的报错是XcodeCoverageConverter使用的Swift ArgumentParser库对多值选项的默认解析规则限制:如果不为数组类型选项显式指定无上限数量属性,单条--exclude-packages参数仅会读取紧随其后的1个值,剩下不带--前缀的内容都会被识别为位置参数<output-formats>的内容,所以第二个包名会被当成输出格式解析触发报错。
修复方案1:直接执行场景(显式重复参数名)
为每个需要排除的包名前都加上--exclude-packages前缀即可,命令写法如下:
xcc generate coverage.json TargetDirectory cobertura-xml --exclude-packages Tests --exclude-packages AnotherPackageName --verbose
修复方案2:Bash脚本场景(批量拼接参数)
如果需要排除的包数量较多,可以在Bash中循环拼接参数,避免重复书写:
jsonPath="coverage.json" coberturaTargetPath="Cobertura" excludePackages=(Tests AnotherPackageName) # 批量拼接排除参数 excludeArgs=() for pkg in "${excludePackages[@]}"; do excludeArgs+=(--exclude-packages "$pkg") done # 执行命令(注意变量外层加双引号,避免路径含空格时解析异常) xcc generate "$jsonPath" \ "$coberturaTargetPath" cobertura-xml \ "${excludeArgs[@]}" \ --verbose
内容的提问来源于stack exchange,提问作者Vignesh
相关产品推荐
相关产品推荐

