diff --git a/.gitignore b/.gitignore index 26dc097f54..0e3d724591 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ detections/*/.yml.example stories/*.yml.example tests/*/*.yml.example +# IDE +.vscode/ + # usual mac files .DS_Store #vim files diff --git a/bin/validate.py b/bin/validate.py index aebb7fe608..d0da8ab741 100644 --- a/bin/validate.py +++ b/bin/validate.py @@ -47,10 +47,10 @@ def validate_schema(REPO_PATH, type, objects, verbose): print("Error reading {0}".format(manifest_file)) error = True continue - try: - jsonschema.validate(instance=object, schema=schema) - except jsonschema.exceptions.ValidationError as json_ve: - errors.append("ERROR: {0} at:\n\t{1}".format(json.dumps(json_ve.message), manifest_file)) + + validator = jsonschema.Draft7Validator(schema, format_checker=jsonschema.FormatChecker()) + for schema_error in validator.iter_errors(object): + errors.append("ERROR: {0} at:\n\t{1}".format(json.dumps(schema_error.message), manifest_file)) error = True if type in objects: @@ -70,7 +70,7 @@ def validate_objects(REPO_PATH, objects, verbose): errors = [] for lookup in objects['lookups']: - lookup_errors = validate_lookups_content(REPO_PATH, "lookups/%s", lookup) + errors = errors + validate_lookups_content(REPO_PATH, "lookups/%s", lookup) objects_array = objects['stories'] + objects['detections'] + objects['baselines'] + objects['response_tasks'] + objects['responses'] for object in objects_array: @@ -85,12 +85,9 @@ def validate_objects(REPO_PATH, objects, verbose): for object in objects['baselines']: errors = errors + validate_baseline_search(object, objects['macros']) - for object in objects['tests']: errors = errors + validate_tests(REPO_PATH, object) - errors = lookup_errors + errors - return errors