-
-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
This issue tracks leftover tasks or future enhancements for the JSON Schema linter and canonicalizer. These were identified during GSoC work and should be considered for future development.
1. Documentation
- Move existing rule documentations to the JSON Schema CLI repo for now, so they are more visible and semi-official until we upstream them properly.
2. Reference Handling
- Break schemas when necessary and use
rereference()in rules that transform applicators, to ensure$refpointers stay correct.
3. Non-auto-fixable Rules
Implement rules that cannot be safely auto-fixed, but should instead produce a clear user-friendly lint message.
-
conflicting_readonly_writeonly.json -
const_and_enum_conflict.json -
examples_must_validate.json -
forbid_empty_enum.json -
format_type_mismatch.json -
incoherent_exclusive_limits.json -
incoherent_inclusive_limits.json -
mincontains_greater_than_maxcontains.json -
mincontains_zero_without_maxcontains.json -
no_actionable_text_in_title_description.json -
oneof_min_branches.json -
require_absolute_draft_uri.json -
require_description_title.json -
require_schema_declaration.json -
top_level_id_must_be_absolute.json -
unbounded_collection_limits.json -
unique_branches_in_oneof.json -
unresolved_ref_pointer.json -
$schemasibling to$refin JSON Schema Draft 7 and older (we can't just remove it otherwise the linter evaluation breaks given it doesn't know the dialect?)
5. Autofixable rules
- Remove unused non-referenced definitions
- Flag references to non-existent locations (remove the
$ref) - Keywords in
allOfbranches that already exist outside are duplicating work and can be removed -
propertiesin anallOfbranch while the outer schema hasadditionalProperties: falseand noproperties/patternPropertiescan be removed. This is one case where we know keywords would never match. Like dead code? - Delete any nested
$schemathat doe not have$id/id(maybe just check if the parent location is a resource?)
6. Additional Rule Enhancements
- Extend
unnecessary_allof_wrapper_propertiesto work on older dialects, not just modern ones. - Improve diagnostics in
duplicate_anyof_branchesby highlighting which specific branches are duplicated. - Improve diagnostics in
duplicate_enum_valuesby highlighting which specific enum entries are duplicated. - Do not warn about
contentMediaTypeorcontentSchemawithoutcontentEncodingifcontentEncodingis available through a$ref - Prevent
patternalongsideenumorconst - Lint that
patternandpatternPropertiesonly have ECMA-262 compliant regexes
6. TODOs Inside Existing Rules
Specifically in UnnecessaryAllOfWrapperModern:
- Add logic to check for type intersections in
typearrays, not just direct equality. - Create a separate rule that removes a keyword if it is exactly equal to an instance of the same keyword already present outside the wrapper.
Metadata
Metadata
Assignees
Labels
No labels