xcode 为什么一些自定义swiftlint规则被标记为具有“无效配置”?

yyhrrdl8  于 2022-11-17  发布在  Swift
关注(0)|答案(1)|浏览(129)

当我运行swiftlint时,我得到一个打印输出,显示一些规则的配置无效。

Invalid configuration for custom rule 'commented_out_code'.
Invalid configuration for custom rule 'avoid_multiline_comment_markers'.
Invalid configuration for custom rule 'avoid_background_color'.

没有其他自定义规则被标记为这样,规则本身在项目中仍然有效。以下是所讨论的配置:

commented_out_code:
  regex: '(?<!:|\/)\/\/\h*[a-z.](?!wiftlint)'
  message: "Comment starting with lowercase letter - did you forget to delete old code?"

avoid_multiline_comment_markers:
  regex: '*/'
  message: "Avoid using multi-line comment markers like */ and /* - use // and /// instead."

avoid_background_color:
  regex: '.background(Color.'
  message: "Avoid using .background(Color), use .backgroundColor() instead."

最后一个是我自己的,另外两个是默认的自定义规则,它们来自一个基本的swiftlint配置文件。
下面是一个“有效”规则来显示格式设置是否相同:

use_int_zero_property_in_single_check:
  regex: ' == 0[^( {)]'
  message: "Avoid checking for '0' in single check, use '== .zero' instead."

关于这些,哪些内容可能是无效的?
我尝试过但没有结果的事情:

  • 交换单引号和双引号
  • 移动积木
  • 使用空格和制表符重新缩进行
piztneat

piztneat1#

这里的问题是不正确的正则表达式语法,主要是没有正确地转义字符。
因此,对于avoid_background_color,它应该是

regex: '\.background\(Color\.'

对于avoid_multiline_comment_markers

regex: '\*/'

commented_out_code对我来说很难理解,但看起来你在开始时漏掉了一个=

regex: '(?=<!:|\/)\/\/\h*[a-z.](?!wiftlint)'

我推荐使用https://regex101.com站点来测试和验证regex语法。

相关问题