我在YAML中定义代码审查配置。我需要保持配置尽可能紧凑,而不显式定义像名称值对的xml / json。
- group: Naming convention
severity: medium
rules:
- name: Check API naming convention
type: pattern
element: api.@name
pattern: '.*\-.*\-\d\.\d'
properties:
- exit-on-fail
- skip-and-proceed
- etc.
我不喜欢这里定义标签“属性”来添加动作。这些操作是否可以存在于对象级别?
答案 0 :(得分:1)
缩进,它们可以存在于对象级别:
- group: Naming convention
severity: medium
rules:
- name: Check API naming convention
type: pattern
element: api.@name
pattern: '.*\-.*\-\d\.\d'
properties:
- exit-on-fail
- skip-and-proceed
- etc.
这是有效的,因为YAML将-
视为缩进,因此,这仍然会创建一个列表作为properties:
键的值。
为了紧凑,你也可以像daggett建议的那样内联写它们:
- group: Naming convention
severity: medium
rules:
- name: Check API naming convention
type: pattern
element: api.@name
pattern: '.*\-.*\-\d\.\d'
properties: [exit-on-fail, skip-and-proceed, etc]
最后,您可以将它们放入您的对象映射,只要它们不与任何其他字段共享名称:
- group: Naming convention
severity: medium
rules:
- name: Check API naming convention
type: pattern
element: api.@name
pattern: '.*\-.*\-\d\.\d'
? exit-on-fail
? skip-and-proceed
? etc.
这会在对象中创建三个额外的键值对,其中三个属性是键,空字符串(可能是一个空值,具体取决于您使用的YAML实现)是值。如果执行此操作,则需要编写自定义构造函数以将其加载到本机数据结构中,因为您需要区分对象字段和操作。再次,如何做到这一点取决于你的YAML实现。