Add schema practices and a JSON Schema ecosystem profile

未关闭
#85 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
46/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
json, python
领域
testing, tooling

调研方向

Start with project_validator/rules.py to see how rule types are defined, then read tests/test_ecosystem_contract.py and the language profile implementation for the existing contract pattern. Add the JSON Schema profile and the four checks described in the issue; the fixtures should show that a well configured schema passes and a bare schema is reported appropriately. Keep --validate-data out of scope.

由索引模型根据 Issue 内容生成。

描述

Checks

New practices, each a rule type in project_validator/rules.py, first supplied by a JSON Schema profile:

Check Passes when
schema-declared every schema names its dialect ($schema) and has an $id; a dialect older than draft 2019-09 warns
schema-validation CI validates the instance documents against their schemas: check-jsonschema, ajv-cli, the jsonschema CLI, jv
schema-examples the schemas come with examples that CI validates: valid ones that must pass and invalid ones that must fail (e.g. examples/valid, examples/invalid, or a test suite)
schema-compatibility CI checks schema changes for breaking changes (json-schema-diff or an equivalent) (warning-level)

Profile

JSON Schema: recognised by intent only, never by plain .json files (#63): *.schema.json, or a top-level $schema naming json-schema.org. code-formatting: prettier or biome. Language practices (coverage, platform-matrix, ...) have no rule and report SKIP.

Later

An optional deep mode, --validate-data, could validate instances against their schemas itself, with jsonschema as an optional dependency like rich (see the Dependency Policy). It follows --build as a precedent and is not part of this issue.

Definition of done

As for language profiles: well_configured_json_schema and bare_json_schema fixtures held by tests/test_ecosystem_contract.py. data-wellformed (#84) already covers schemas that do not parse.

主要语言
Python
星标
4
派生
1
平均合并
10 小时 41 分钟
30 天内合并 PR
79

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

cpp-best-practices/project_validator 的其他 Issue

查看 cpp-best-practices/project_validator 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。