On 11/6/26 09:19, Ahmed S. Darwish wrote: > The kconfig-checker YAML rule files describes which kernel .config symbols > are expected to be enabled or disabled. Introduce a schema for such files. > > Describe and add rational for each element in the schema as well. > > Signed-off-by: Ahmed S. Darwish > --- > tools/kconfig-checker/schema.yml | 115 +++++++++++++++++++++++++++++++ > 1 file changed, 115 insertions(+) > create mode 100644 tools/kconfig-checker/schema.yml > > diff --git a/tools/kconfig-checker/schema.yml b/tools/kconfig-checker/schema.yml > new file mode 100644 > index 000000000000..a7f1b0a78cc7 > --- /dev/null > +++ b/tools/kconfig-checker/schema.yml > @@ -0,0 +1,115 @@ > +# SPDX-License-Identifier: GPL-2.0-only > + > +"$schema": "https://json-schema.org/draft-07/schema" > + > +title: Schema for kconfig-checker rule files > +type: object > +required: [rules] > +additionalProperties: false > + > +properties: > + # > + # Optional base URL for the documentation page used by rationale > + # links. See `docs_hint`. > + # > + docs_url: > + type: string > + format: uri > + > + rules: > + type: array > + minItems: 1 > + items: > + type: object > + oneOf: > + - required: [name] > + - required: [name_pattern] > + required: [expected, severity] > + additionalProperties: false > + > + properties: > + # > + # Exact kernel configuration symbol to check. > + # > + # Example: CONFIG_PREEMPT_RT > + # > + name: > + type: string > + pattern: '^CONFIG_[A-Z0-9_]+$' > + > + # > + # Regex matching one or more kernel configuration symbols. > + # > + # Example: CONFIG_DEBUG_.* > + # > + name_pattern: > + type: string > + format: regex > + > + # > + # Expected value for the matching kernel configuration option. > + # > + # Values: > + # > + # y option is expected to be enabled (built-in or module). Kconfig's tristates use 3-state logic. It seems like you're approximating 'm' as 'y'? These are meaningfully different values :/ > + # n option is expected to be disabled or unset. > + # allowed option is permitted and must not be reported as a violation. > + # This is used to exempt a specific symbol from a broader > + # `name_pattern` rule with `expected: n`. > + # > + expected: > + type: string > + enum: [y, n, allowed] What if a user wants to specify that the value can be 'n' or 'y', but not 'm'? - Julian Braha