The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .circleci
    ├── README.md
    └── config.yml
├── .codemapignore
├── .dockerignore
├── .envrc
├── .gitattributes
├── .github
    ├── CODEOWNERS
    ├── ISSUE_TEMPLATE
    │   ├── bug_report.md
    │   └── feature_request.md
    ├── PULL_REQUEST_TEMPLATE
    │   └── release_pr_template.md
    ├── actionlint.yaml
    ├── pull_request_template.md
    ├── stale.yml
    └── workflows
    │   ├── .codemapignore
    │   ├── Makefile
    │   ├── README.md
    │   ├── build-test-core-x86.jsonnet
    │   ├── build-test-core-x86.yml
    │   ├── build-test-docker.jsonnet
    │   ├── build-test-docker.yml
    │   ├── build-test-manylinux-aarch64.jsonnet
    │   ├── build-test-manylinux-aarch64.yml
    │   ├── build-test-manylinux-x86.jsonnet
    │   ├── build-test-manylinux-x86.yml
    │   ├── build-test-osx-arm64.jsonnet
    │   ├── build-test-osx-arm64.yml
    │   ├── build-test-osx-x86.jsonnet
    │   ├── build-test-osx-x86.yml
    │   ├── build-test-windows-x86.jsonnet
    │   ├── build-test-windows-x86.yml
    │   ├── check-submodule.yml
    │   ├── libs
    │       ├── actions.libsonnet
    │       ├── docker.libsonnet
    │       ├── gha.libsonnet
    │       ├── semgrep.libsonnet
    │       └── util.libsonnet
    │   ├── lint.jsonnet
    │   ├── lint.yml
    │   ├── nightly.jsonnet
    │   ├── nightly.yml
    │   ├── pr-checklist.yaml
    │   ├── semgrep.jsonnet
    │   ├── semgrep.yml
    │   ├── sync-with-PRO.jsonnet
    │   ├── sync-with-PRO.yml
    │   ├── test-e2e-semgrep-ci.jsonnet
    │   ├── test-e2e-semgrep-ci.yml
    │   ├── tests.jsonnet
    │   ├── tests.yml
    │   ├── trigger-doc-update.yml
    │   ├── trigger-semgrep-comparison-argo.jsonnet
    │   └── trigger-semgrep-comparison-argo.yml
├── .gitignore
├── .gitmodules
├── .ocamlformat
├── .pre-commit-config.yaml
├── .pre-commit-hooks.yaml
├── .semgrepignore
├── .vscode
    ├── extensions.json
    ├── launch.json
    └── tasks.json
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── COPYRIGHT
├── Dockerfile
├── INSTALL.md
├── LICENSE
├── Makefile
├── README.md
├── SECURITY.md
├── TCB
    ├── Cap.ml
    ├── Cap.mli
    ├── CapRandom.ml
    ├── CapRandom.mli
    ├── CapStdlib.ml
    ├── CapStdlib.mli
    ├── CapSys.ml
    ├── CapSys.mli
    ├── CapUnix.ml
    ├── CapUnix.mli
    ├── common.libsonnet
    ├── dune
    ├── forbid_chdir.jsonnet
    ├── forbid_console.jsonnet
    ├── forbid_everything.jsonnet
    ├── forbid_exec.jsonnet
    ├── forbid_exit.jsonnet
    ├── forbid_fs.jsonnet
    ├── forbid_misc.jsonnet
    ├── forbid_network.jsonnet
    ├── forbid_process.jsonnet
    └── forbid_tmp.jsonnet
├── bin
├── changelog.d
    ├── README
    └── gh-1234.example
├── cli
    ├── LICENSE
    ├── MANIFEST.in
    ├── Makefile
    ├── Pipfile
    ├── Pipfile.lock
    ├── park.cfg
    ├── pyproject.toml
    ├── setup.py
    ├── src
    │   ├── semdep
    │   │   ├── __init__.py
    │   │   ├── external
    │   │   │   ├── __init__.py
    │   │   │   ├── packaging
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── LICENSE.APACHE
    │   │   │   │   ├── LICENSE.BSD
    │   │   │   │   ├── README
    │   │   │   │   ├── __about__.py
    │   │   │   │   ├── __init__.py
    │   │   │   │   ├── _manylinux.py
    │   │   │   │   ├── _musllinux.py
    │   │   │   │   ├── _structures.py
    │   │   │   │   ├── py.typed
    │   │   │   │   ├── specifiers.py
    │   │   │   │   ├── tags.py
    │   │   │   │   ├── utils.py
    │   │   │   │   └── version.py
    │   │   │   └── parsy
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.rst
    │   │   │   │   ├── VENDOR_README.md
    │   │   │   │   ├── __init__.py
    │   │   │   │   ├── __init__.pyi
    │   │   │   │   └── version.py
    │   │   ├── golang_version.py
    │   │   ├── matchers
    │   │   │   ├── __init__.py
    │   │   │   ├── base.py
    │   │   │   ├── gradle.py
    │   │   │   └── pip_requirements.py
    │   │   ├── maven_version.py
    │   │   ├── package_restrictions.py
    │   │   ├── parsers
    │   │   │   ├── __init__.py
    │   │   │   ├── cargo.py
    │   │   │   ├── composer.py
    │   │   │   ├── gem.py
    │   │   │   ├── go_mod.py
    │   │   │   ├── gradle.py
    │   │   │   ├── mix.py
    │   │   │   ├── package_lock.py
    │   │   │   ├── packages_lock_c_sharp.py
    │   │   │   ├── pipfile.py
    │   │   │   ├── pnpm.py
    │   │   │   ├── poetry.py
    │   │   │   ├── pom_tree.py
    │   │   │   ├── preprocessors.py
    │   │   │   ├── pubspec_lock.py
    │   │   │   ├── requirements.py
    │   │   │   ├── swiftpm.py
    │   │   │   ├── util.py
    │   │   │   └── yarn.py
    │   │   └── subproject_matchers.py
    │   └── semgrep
    │   │   ├── __init__.py
    │   │   ├── __main__.py
    │   │   ├── app
    │   │       ├── __init__.py
    │   │       ├── auth.py
    │   │       ├── project_config.py
    │   │       ├── scans.py
    │   │       ├── session.py
    │   │       └── version.py
    │   │   ├── autofix.py
    │   │   ├── bin
    │   │       └── __init__.py
    │   │   ├── bytesize.py
    │   │   ├── cli.py
    │   │   ├── commands
    │   │       ├── __init__.py
    │   │       ├── ci.py
    │   │       ├── install.py
    │   │       ├── login.py
    │   │       ├── publish.py
    │   │       ├── scan.py
    │   │       └── wrapper.py
    │   │   ├── config_resolver.py
    │   │   ├── console.py
    │   │   ├── console_scripts
    │   │       ├── __init__.py
    │   │       ├── entrypoint.py
    │   │       └── pysemgrep.py
    │   │   ├── constants.py
    │   │   ├── core_output.py
    │   │   ├── core_runner.py
    │   │   ├── core_targets_plan.py
    │   │   ├── default_group.py
    │   │   ├── dependency_aware_rule.py
    │   │   ├── engine.py
    │   │   ├── env.py
    │   │   ├── error.py
    │   │   ├── error_handler.py
    │   │   ├── error_location.py
    │   │   ├── exclude_rules.py
    │   │   ├── external
    │   │       ├── __init__.py
    │   │       ├── git_url_parser.py
    │   │       └── pymmh3.py
    │   │   ├── formatter
    │   │       ├── __init__.py
    │   │       ├── base.py
    │   │       ├── emacs.py
    │   │       ├── gitlab_sast.py
    │   │       ├── gitlab_secrets.py
    │   │       ├── json.py
    │   │       ├── junit_xml.py
    │   │       ├── sarif.py
    │   │       ├── text.py
    │   │       └── vim.py
    │   │   ├── git.py
    │   │   ├── join_rule.py
    │   │   ├── main.py
    │   │   ├── meta.py
    │   │   ├── metrics.py
    │   │   ├── nosemgrep.py
    │   │   ├── notifications.py
    │   │   ├── output.py
    │   │   ├── output_extra.py
    │   │   ├── parsing_data.py
    │   │   ├── profile_manager.py
    │   │   ├── resolve_dependency_source.py
    │   │   ├── resolve_subprojects.py
    │   │   ├── rpc.py
    │   │   ├── rpc_call.py
    │   │   ├── rule.py
    │   │   ├── rule_lang.py
    │   │   ├── rule_match.py
    │   │   ├── run_scan.py
    │   │   ├── scan_report.py
    │   │   ├── semgrep_core.py
    │   │   ├── semgrep_types.py
    │   │   ├── settings.py
    │   │   ├── state.py
    │   │   ├── subproject.py
    │   │   ├── target_manager.py
    │   │   ├── target_mode.py
    │   │   ├── terminal.py
    │   │   ├── test.py
    │   │   ├── tracing.py
    │   │   ├── types.py
    │   │   ├── util.py
    │   │   └── verbose_logging.py
    ├── stubs
    │   ├── astpretty.pyi
    │   ├── boltons
    │   │   ├── __init__.pyi
    │   │   ├── cacheutils.pyi
    │   │   ├── debugutils.pyi
    │   │   ├── deprutils.pyi
    │   │   ├── dictutils.pyi
    │   │   ├── easterutils.pyi
    │   │   ├── ecoutils.pyi
    │   │   ├── excutils.pyi
    │   │   ├── fileutils.pyi
    │   │   ├── formatutils.pyi
    │   │   ├── funcutils.pyi
    │   │   ├── gcutils.pyi
    │   │   ├── ioutils.pyi
    │   │   ├── iterutils.pyi
    │   │   ├── jsonutils.pyi
    │   │   ├── listutils.pyi
    │   │   ├── mathutils.pyi
    │   │   ├── mboxutils.pyi
    │   │   ├── namedutils.pyi
    │   │   ├── queueutils.pyi
    │   │   ├── setutils.pyi
    │   │   ├── socketutils.pyi
    │   │   ├── statsutils.pyi
    │   │   ├── strutils.pyi
    │   │   ├── tableutils.pyi
    │   │   ├── tbutils.pyi
    │   │   ├── timeutils.pyi
    │   │   ├── typeutils.pyi
    │   │   └── urlutils.pyi
    │   ├── click_option_group
    │   │   ├── __init__.py
    │   │   └── optgroup.pyi
    │   ├── glom
    │   │   ├── __init__.pyi
    │   │   └── core.pyi
    │   ├── packaging
    │   │   ├── __init__.py
    │   │   └── version.pyi
    │   └── ruamel
    │   │   ├── __init__.py
    │   │   └── yaml.pyi
    └── tests
    │   ├── README.md
    │   ├── __init__.py
    │   ├── check-markers
    │   ├── conftest.py
    │   ├── default
    │       ├── consistency
    │       │   ├── __init__.py
    │       │   └── test_lang_consistency.py
    │       ├── e2e-other
    │       │   ├── parsers
    │       │   │   ├── test_gem.py
    │       │   │   ├── test_mix.py
    │       │   │   ├── test_package_lock.py
    │       │   │   ├── test_poetry.py
    │       │   │   ├── test_swiftpm.py
    │       │   │   └── test_yarn.py
    │       │   ├── readme.txt
    │       │   ├── rules
    │       │   ├── snapshots
    │       │   │   ├── test_ci
    │       │   │   │   ├── test_app_blocked_findings
    │       │   │   │   │   ├── mocked_complete_response0
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   │   └── mocked_complete_response1
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   ├── test_app_ignore
    │       │   │   │   │   ├── ignored_product0--v1
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product0-
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product0-_foo.py-v1
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product0-_foo.py
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product0-foo.py-v1
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product0-foo.py
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product1--v1
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product1-
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product1-_foo.py-v1
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product1-_foo.py
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── ignored_product1-foo.py-v1
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── ignored_product1-foo.py
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_config_run
    │       │   │   │   │   ├── autofix
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── noautofix
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_dryrun
    │       │   │   │   │   └── None
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_existing_reachable_finding_deduplication
    │       │   │   │   │   └── config
    │       │   │   │   │   │   ├── base_output.txt
    │       │   │   │   │   │   └── new_output.txt
    │       │   │   │   ├── test_existing_supply_chain_finding
    │       │   │   │   │   └── config
    │       │   │   │   │   │   ├── base_output.txt
    │       │   │   │   │   │   └── new_output.txt
    │       │   │   │   ├── test_fail_on_historical_scan_without_secrets
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_full_run
    │       │   │   │   │   ├── autofix-azure-pipelines-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-azure-pipelines
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-bitbucket-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-bitbucket
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-buildkite-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-buildkite
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-circleci-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-circleci
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-github-enterprise
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-github-pr-semgrepconfig
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-github-pr
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-github-push-special-env-vars
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-github-push-with-app-url
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-github-push
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-gitlab-push
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-gitlab-special-env-vars
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-gitlab
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-jenkins-missing-vars
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-jenkins-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-jenkins
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-local
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-local_with_dot_url
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-self-hosted
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-travis-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-travis
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix-unparsable_url
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-azure-pipelines-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-azure-pipelines
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-bitbucket-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-bitbucket
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-buildkite-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-buildkite
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-circleci-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-circleci
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-github-enterprise
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-github-pr-semgrepconfig
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-github-pr
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-github-push-special-env-vars
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-github-push-with-app-url
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-github-push
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-gitlab-push
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-gitlab-special-env-vars
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-gitlab
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-jenkins-missing-vars
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-jenkins-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-jenkins
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-local
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-local_with_dot_url
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-self-hosted
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-travis-overwrite-autodetected-variables
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix-travis
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── noautofix-unparsable_url
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   ├── meta.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_generic_secrets_output
    │       │   │   │   │   └── generic_secrets_and_real_rule
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   ├── test_github_ci_bad_base_sha
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_lockfile_parse_failure_reporting
    │       │   │   │   │   ├── complete.json
    │       │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   ├── results.txt
    │       │   │   │   │   └── v1
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── findings_and_ignores.json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_nosem
    │       │   │   │   │   ├── autofix---disable-nosem
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   │   ├── autofix---enable-nosem
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   │   ├── noautofix---disable-nosem
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   │   └── noautofix---enable-nosem
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   ├── test_outputs
    │       │   │   │   │   ├── autofix---emacs
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix---gitlab-sast
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix---gitlab-secrets
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix---json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix---sarif
    │       │   │   │   │   │   ├── results.out
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── autofix---vim
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix---emacs
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix---gitlab-sast
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix---gitlab-secrets
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix---json
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── noautofix---sarif
    │       │   │   │   │   │   ├── results.out
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── noautofix---vim
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_query_dependency
    │       │   │   │   │   └── True-config
    │       │   │   │   │   │   ├── complete.json
    │       │   │   │   │   │   ├── dependencies.json
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   ├── test_reachable_and_unreachable_diff_scan_findings
    │       │   │   │   │   └── config
    │       │   │   │   │   │   ├── base_output.txt
    │       │   │   │   │   │   └── new_output.txt
    │       │   │   │   ├── test_sarif_output_with_dataflow_traces
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_shallow_wrong_merge_base
    │       │   │   │   │   ├── bad_results.txt
    │       │   │   │   │   └── results.txt
    │       │   │   │   └── test_subdir
    │       │   │   │   │   ├── ..-False
    │       │   │   │   │       └── output.txt
    │       │   │   │   │   ├── ..org-False
    │       │   │   │   │       └── output.txt
    │       │   │   │   │   ├── checkout_project_nameorgexamples-False
    │       │   │   │   │       └── output.txt
    │       │   │   │   │   ├── org-True
    │       │   │   │   │       └── output.txt
    │       │   │   │   │   ├── orgexamples-True
    │       │   │   │   │       └── output.txt
    │       │   │   │   │   └── test..orgexamples-True
    │       │   │   │   │       └── output.txt
    │       │   │   ├── test_download_config
    │       │   │   │   └── test_new_feature_registry_config
    │       │   │   │   │   └── output.txt
    │       │   │   ├── test_join
    │       │   │   │   ├── test_basic
    │       │   │   │   │   ├── rulesjoin_rulesinlineinline-rules.yaml-join_rulesuser-input-with-unescaped-extension
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesjoin_rulesinlinetaint.yaml-join_rulesuser-input-with-unescaped-extension
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesjoin_rulesmultiple-rules.yaml-join_rulesuser-input-with-unescaped-extension
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesjoin_rulesuser-input-escaped-with-safe.yaml-join_rulesuser-input-escaped-with-safe
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   └── rulesjoin_rulesuser-input-with-unescaped-extension.yaml-join_rulesuser-input-with-unescaped-extension
    │       │   │   │   │   │   └── results.json
    │       │   │   │   └── test_recursive
    │       │   │   │   │   ├── rulesjoin_rulesrecursiveflask-deep-stored-xss-exampleflask-stored-xss.yaml-join_rulesrecursiveflask-deep-stored-xss-example
    │       │   │   │   │       └── results.json
    │       │   │   │   │   ├── rulesjoin_rulesrecursivejava-callgraph-examplevulnado-sqli.yaml-join_rulesrecursivejava-callgraph-examplevulnado-chain-broken
    │       │   │   │   │       └── results.json
    │       │   │   │   │   └── rulesjoin_rulesrecursivejava-callgraph-examplevulnado-sqli.yaml-join_rulesrecursivejava-callgraph-examplevulnado
    │       │   │   │   │       └── results.json
    │       │   │   ├── test_match_based_id
    │       │   │   │   ├── test_duplicate_matches_indexing
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_value
    │       │   │   │   │   ├── rule_and_target0
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   └── rule_and_target1
    │       │   │   │   │   │   └── results.json
    │       │   │   │   └── test_value_osemfail
    │       │   │   │   │   └── rule_and_target0
    │       │   │   │   │       └── results.json
    │       │   │   ├── test_pro_rule_skipping
    │       │   │   │   ├── test_pro_rule_skipping
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_pro_rule_skipping_no_parsing
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_sca
    │       │   │   │   ├── test_sca_lockfile_only_output
    │       │   │   │   │   └── results.txt
    │       │   │   │   └── test_sca_output
    │       │   │   │   │   └── results.txt
    │       │   │   ├── test_secret
    │       │   │   │   └── test_cli_test_secret_rule
    │       │   │   │   │   └── results.txt
    │       │   │   ├── test_ssc
    │       │   │   │   ├── test_no_lockfiles
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_parsing
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockcommits.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockcommits.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockempty.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockempty.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockfiles.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockfiles.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-locknested-dependencies-dup.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-locknested-dependencies-dup.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-locknested-dependencies.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-locknested-dependencies.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockone-package-dev.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockone-package-dev.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockone-package.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockone-package.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockscoped-packages.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-lockscoped-packages.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-locktwo-packages.v1package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpackage-locktwo-packages.v2package-lock.json
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpipfileemptyPipfile.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpipfileno-versionPipfile.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpipfileone-package-devPipfile.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpipfileone-packagePipfile.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpipfiletwo-packages-altPipfile.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpipfiletwo-packagesPipfile.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmcommitspnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmemptypnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmexoticpnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmfilespnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmmultiple-packagespnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmmultiple-versionspnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmno-packagespnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmone-package-devpnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmone-package-v6-lockfilepnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmone-packagepnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmpeer-dependencies-advancedpnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmpeer-dependenciespnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmscoped-packages-v6-lockfilepnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmscoped-packagespnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpnpmtarballpnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpoetryemptypoetry.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpoetryone-package-with-metadatapoetry.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpoetryone-packagepoetry.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpoetrysource-gitpoetry.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpoetrysource-legacypoetry.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingpoetrytwo-packagespoetry.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsemptyrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsfile-format-examplerequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsmultiple-packages-constrainedrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsmultiple-packages-mixedrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsnon-normalized-namesrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsone-package-constrainedrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsone-package-unconstrainedrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementsonly-commentsrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingrequirementswith-added-supportrequirements.txt
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarncache-compressionlevel.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarncommits.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarncommits.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnempty.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnempty.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnfiles.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnfiles.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnmetadata-only.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnmultiple-constraints.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnmultiple-versions.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnmultiple-versions.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnone-package.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnone-package.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnscoped-packages.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnscoped-packages.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarntwo-packages.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarntwo-packages.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnversions-with-build-strings.v1yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   ├── targetsdependency_awareosv_parsingyarnversions-with-build-strings.v2yarn.lock
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   │   └── targetsdependency_awarepnpm-error-keypnpm-lock.yaml
    │       │   │   │   │   │   └── dependencies.json
    │       │   │   │   ├── test_sarif_sca_output
    │       │   │   │   │   ├── rulesdependency_awareansi-html.yaml-dependency_awareansi
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── rulesdependency_awareno-pattern.yaml-dependency_awareyarn
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   └── rulesdependency_awareyarn-sass.yaml-dependency_awareyarn
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_ssc
    │       │   │   │   │   ├── rulesdependency_awareansi-html.yaml-dependency_awareansi
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareawscli_vuln.yaml-dependency_awareawscli-with-manifest
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareawscli_vuln.yaml-dependency_awareawscli
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaredart-parity.yaml-dependency_awaredart
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaregeneric-sca.yaml-dependency_awaregeneric
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarego-sca.yaml-dependency_awarego
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarego-sca.yaml-dependency_awarego_multi_newline
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarego-sca.yaml-dependency_awarego_toolchain
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaregradle-guava.yaml-dependency_awaregradle-direct
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle-arbitrary-comment
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle-kts
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle-no-comment
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle_empty
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle_trailing_newline
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-pnpm-sca.yaml-dependency_awarepnpm-v6
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-pnpm-sca.yaml-dependency_awarepnpm-v9-no-snapshots-this-is-wrong-btw
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-pnpm-sca.yaml-dependency_awarepnpm-v9
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-pnpm-sca.yaml-dependency_awarepnpm-workspaces
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-pnpm-sca.yaml-dependency_awarepnpm
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-sca.yaml-dependency_awaredeeply_nested_package_lock
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-sca.yaml-dependency_awarejs
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-sca.yaml-dependency_awarenpm-empty
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-sca.yaml-dependency_awarenpm-malformed
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-sca.yaml-dependency_awarepackage-lock_resolved_false
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-yarn2-sca.yaml-dependency_awarepackage-lock-v3
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejs-yarn2-sca.yaml-dependency_awareyarn2
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarelodash-4.17.19.yaml-dependency_awarelodash
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarelog4shell.yaml-dependency_awarelog4j
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaremaven-guice.yaml-dependency_awaremaven_dep_tree_extra_field
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaremaven-guice.yaml-dependency_awaremaven_dep_tree_joined
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaremaven-guice.yaml-dependency_awaremaven_dep_tree_optional
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaremaven-guice.yaml-dependency_awaremaven_dep_tree_release_version
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaremonorepo.yaml-dependency_awaremonorepo
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaremulti-dep-rule.yaml-dependency_awaremulti-dep-rule
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarenested_package_lock.yaml-dependency_awarenested_package_lock
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareno-pattern.yaml-dependency_aware
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareno-pattern.yaml-dependency_awareyarn-v1-without-version-constraint
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareno-pattern.yaml-dependency_awareyarn
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareno-pattern.yaml-dependency_awareyarn_multi_hash
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarenuget-sca-simple.yaml-dependency_awarenuget-large
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarenuget-sca-simple.yaml-dependency_awarenuget
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarephp-sca.yaml-dependency_awarephp
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-pipfile-pyhcl-sca.yaml-dependency_awarepipfile_with_vuln_in_dev-packages
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-pipfile-sca.yaml-dependency_awarepipfile
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-pipfile-sca.yaml-dependency_awarepipfile_with_empty_dev-packages
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-pipfile-sca.yaml-dependency_awarepipfile_with_one_newline_between_sections
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-pipfile-sca.yaml-dependency_awarepipfile_with_uppercase_package_name
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awaremanifest_parse_error
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarenuget
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarepoetry
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarepoetry_comments
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarepoetry_empty_table
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarepoetry_quoted_key
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarepoetry_trailing_newlines
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarepoetry_with_arbitrary_starting_comment
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-sca.yaml-dependency_awarepoetry_with_uppercase_package_name
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements3
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_pip
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_with_uppercase_package_name
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareruby-sca.yaml-dependency_awareruby-with-multiple-gem-sections
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareruby-sca.yaml-dependency_awareruby-with-multiple-remotes
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareruby-sca.yaml-dependency_awareruby
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarerust-sca.yaml-dependency_awarerust
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarerust-sca.yaml-dependency_awarerust_short_lockfile
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareswift-sca.yaml-dependency_awareswiftpm_missing_version
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareswift-sca.yaml-dependency_awareswiftpmv1
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareswift-sca.yaml-dependency_awareswiftpmv2
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareswift-sca.yaml-dependency_awareswiftpmv3
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaretransitive_and_direct.yaml-dependency_awaretransitive_and_directdirect_reachable_transitive_unreachable
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaretransitive_and_direct.yaml-dependency_awaretransitive_and_directtransitive_not_reachable_if_direct
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awareyarn-sass.yaml-dependency_awareyarn
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── rulesdependency_awareyarn-sass.yaml-dependency_awareyarn_at_in_version
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_ssc__lockfileless
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle-no-lockfile-missing-gradlew
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle-no-lockfile
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awaremaven-log4j.yaml-dependency_awaremaven-no-lockfile
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── rulesdependency_awarenuget-newtonsoft-json-parity.yaml-dependency_awarenuget_no_lockfile
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_ssc__pypi_package_name_lowercase
    │       │   │   │   │   ├── rulesdependency_awarepython-pipfile-case-insensitive-package.yaml-dependency_awarepipfile
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-poetry-case-insensitive-package.yaml-dependency_awarepoetry
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── rulesdependency_awarepython-requirements-case-insensitive-package.yaml-dependency_awarerequirements
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_ssc__requirements_lockfiles
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirement
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirement_pip
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_folder
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_folder_dep_dupes
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_folder_no_src
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_folder_similar_deps
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_multiple_lockfiles
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_multiple_lockfiles_dep_dupes
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_multiple_lockfiles_dep_dupes_no_src
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_multiple_lockfiles_no_src
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_multiple_lockfiles_similar_deps
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_nested
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_nested_dep_dupes
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_nested_folder
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_nested_folder_dep_dupes
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_nested_folder_no_src
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_nested_no_src
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_pip
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── rulesdependency_awarepython-requirements-sca.yaml-dependency_awarerequirements_pip_folder
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_ssc__setup_py_dynamic_resolution
    │       │   │   │   │   └── rulesdependency_awarepython-requirements-sca.yaml-dependency_awaresetup-py-dynamic-resolution
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   └── test_ssc_logged_in
    │       │   │   │   │   ├── rulesdependency_awareawscli_vuln.yaml-dependency_awareawscli
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle-no-lockfile
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   └── rulesdependency_awarejava-gradle-sca.yaml-dependency_awaregradle_multi_project_no_lockfile
    │       │   │   │   │       └── results.txt
    │       │   │   └── test_taint_intrafile
    │       │   │   │   └── test_taint_intrafile
    │       │   │   │       └── rulestaint_intrafile.yaml-tainttaint_intrafile.py
    │       │   │   │           └── results.txt
    │       │   ├── targets
    │       │   ├── test_api.py
    │       │   ├── test_ci.py
    │       │   ├── test_download_config.py
    │       │   ├── test_golang_version.py
    │       │   ├── test_join.py
    │       │   ├── test_log_file.py
    │       │   ├── test_login.py
    │       │   ├── test_match_based_id.py
    │       │   ├── test_pro_rule_skipping.py
    │       │   ├── test_publish.py
    │       │   ├── test_sca.py
    │       │   ├── test_secret.py
    │       │   └── test_ssc.py
    │       ├── e2e-pysemgrep
    │       │   ├── test_performance.py
    │       │   └── test_utility_commands.py
    │       ├── e2e
    │       │   ├── __init__.py
    │       │   ├── rules
    │       │   │   ├── aliengrep
    │       │   │   │   ├── begin-end.yaml
    │       │   │   │   ├── dockerfile.yaml
    │       │   │   │   ├── html.yaml
    │       │   │   │   ├── httpresponse.yaml
    │       │   │   │   ├── long-match.yaml
    │       │   │   │   ├── markdown.yaml
    │       │   │   │   ├── metavariable-pattern.yaml
    │       │   │   │   ├── multi-lines.yaml
    │       │   │   │   ├── nosem-html.yaml
    │       │   │   │   └── terraform.yaml
    │       │   │   ├── autofix
    │       │   │   │   ├── add-metadata-hcl.yaml
    │       │   │   │   ├── autofix.yaml
    │       │   │   │   ├── csv-writer.yaml
    │       │   │   │   ├── defaulthttpclient.yaml
    │       │   │   │   ├── delete-partial-line.yaml
    │       │   │   │   ├── django-none-password-default.yaml
    │       │   │   │   ├── exact-collision.yaml
    │       │   │   │   ├── flask-use-jsonify.yaml
    │       │   │   │   ├── imported-entity.yaml
    │       │   │   │   ├── java-string-wrap.yaml
    │       │   │   │   ├── ocaml_paren_expr.yaml
    │       │   │   │   ├── order.yaml
    │       │   │   │   ├── overlapping-collision.yaml
    │       │   │   │   ├── python-assert-statement.yaml
    │       │   │   │   ├── python-delete-import.yaml
    │       │   │   │   ├── python-ranges.yaml
    │       │   │   │   ├── redundant.yaml
    │       │   │   │   ├── replace-field-yaml.yaml
    │       │   │   │   ├── requests-use-timeout.yaml
    │       │   │   │   ├── three-autofixes.yaml
    │       │   │   │   ├── two-autofixes.yaml
    │       │   │   │   └── utf-8.yaml
    │       │   │   ├── bad-java-rule.yaml
    │       │   │   ├── basic.yaml
    │       │   │   ├── cwe_tag.yaml
    │       │   │   ├── deduplication
    │       │   │   │   ├── duplication-different-message.yaml
    │       │   │   │   └── duplication-same-message.yaml
    │       │   │   ├── dependency_aware
    │       │   │   │   ├── ansi-html.yaml
    │       │   │   │   ├── awscli_vuln.yaml
    │       │   │   │   ├── dart-parity.yaml
    │       │   │   │   ├── generic-sca.yaml
    │       │   │   │   ├── go-sca.yaml
    │       │   │   │   ├── gradle-guava.yaml
    │       │   │   │   ├── java-gradle-sca.yaml
    │       │   │   │   ├── js-pnpm-sca.yaml
    │       │   │   │   ├── js-sca.yaml
    │       │   │   │   ├── js-yarn2-sca.yaml
    │       │   │   │   ├── lodash-4.17.19.yaml
    │       │   │   │   ├── log4shell.yaml
    │       │   │   │   ├── maven-guice.yaml
    │       │   │   │   ├── maven-log4j.yaml
    │       │   │   │   ├── monorepo.yaml
    │       │   │   │   ├── monorepo_with_first_party.yaml
    │       │   │   │   ├── multi-dep-rule.yaml
    │       │   │   │   ├── nested_package_lock.yaml
    │       │   │   │   ├── no-pattern.yaml
    │       │   │   │   ├── nuget-newtonsoft-json-parity.yaml
    │       │   │   │   ├── nuget-sca-simple.yaml
    │       │   │   │   ├── php-sca.yaml
    │       │   │   │   ├── python-pipfile-case-insensitive-package.yaml
    │       │   │   │   ├── python-pipfile-pyhcl-sca.yaml
    │       │   │   │   ├── python-pipfile-sca.yaml
    │       │   │   │   ├── python-poetry-case-insensitive-package.yaml
    │       │   │   │   ├── python-poetry-sca.yaml
    │       │   │   │   ├── python-requirements-case-insensitive-package.yaml
    │       │   │   │   ├── python-requirements-sca.yaml
    │       │   │   │   ├── python-uv-sca.yaml
    │       │   │   │   ├── ruby-sca.yaml
    │       │   │   │   ├── rust-sca.yaml
    │       │   │   │   ├── swift-sca.yaml
    │       │   │   │   ├── transitive_and_direct.yaml
    │       │   │   │   └── yarn-sass.yaml
    │       │   │   ├── duplicate-rule.yaml
    │       │   │   ├── eqeq-basic-c.yaml
    │       │   │   ├── eqeq-basic.yaml
    │       │   │   ├── eqeq-meta.yaml
    │       │   │   ├── eqeq-python.yaml
    │       │   │   ├── eqeq-source.yml
    │       │   │   ├── eqeq.yaml
    │       │   │   ├── experiment-rule.yaml
    │       │   │   ├── extra_field.yaml
    │       │   │   ├── filecount.yaml
    │       │   │   ├── fixtest
    │       │   │   │   ├── basic_fix.yaml
    │       │   │   │   ├── basic_fix_regex.yaml
    │       │   │   │   ├── fix_trailing_newline.yaml
    │       │   │   │   ├── other_fix.yaml
    │       │   │   │   └── other_pattern.yaml
    │       │   │   ├── hidden
    │       │   │   │   └── .hidden
    │       │   │   │   │   └── eqeq.yaml
    │       │   │   ├── inside.yaml
    │       │   │   ├── invalid-rules
    │       │   │   │   ├── additional-invalid-pattern-operator.yaml
    │       │   │   │   ├── invalid-metavariable-regex.yaml
    │       │   │   │   ├── invalid-missing-top-item.yaml
    │       │   │   │   ├── invalid-pattern-child.yaml
    │       │   │   │   ├── invalid-pattern-operator.yaml
    │       │   │   │   ├── invalid-pattern.yaml
    │       │   │   │   ├── missing-hyphen.yaml
    │       │   │   │   ├── missing-pattern.yaml
    │       │   │   │   ├── string-pattern-under-patterns.yaml
    │       │   │   │   └── string-pattern.yaml
    │       │   │   ├── inventory-rule.yaml
    │       │   │   ├── join_rules
    │       │   │   │   ├── inline
    │       │   │   │   │   ├── inline-rules.yaml
    │       │   │   │   │   └── taint.yaml
    │       │   │   │   ├── multiple-rules.yaml
    │       │   │   │   ├── recursive
    │       │   │   │   │   ├── flask-deep-stored-xss-example
    │       │   │   │   │   │   ├── flask-stored-xss.yaml
    │       │   │   │   │   │   └── rule-parts
    │       │   │   │   │   │   │   ├── callgraph.yaml
    │       │   │   │   │   │   │   ├── callgraph2.yaml
    │       │   │   │   │   │   │   ├── model-data-returned.yaml
    │       │   │   │   │   │   │   ├── models.yaml
    │       │   │   │   │   │   │   ├── param-saved-in-model.yaml
    │       │   │   │   │   │   │   ├── template-variables.yaml
    │       │   │   │   │   │   │   ├── unsafely-rendered-data.yaml
    │       │   │   │   │   │   │   └── unsanitized-data-sink.yaml
    │       │   │   │   │   └── java-callgraph-example
    │       │   │   │   │   │   ├── rule-parts
    │       │   │   │   │   │       ├── java-callgraph.yaml
    │       │   │   │   │   │       ├── java-spring-user-input.yaml
    │       │   │   │   │   │       └── method-parameter-formatted-sql.yaml
    │       │   │   │   │   │   └── vulnado-sqli.yaml
    │       │   │   │   ├── rule_parts
    │       │   │   │   │   ├── any-template-var.yaml
    │       │   │   │   │   ├── flask-user-input.yaml
    │       │   │   │   │   ├── java-callgraph.yaml
    │       │   │   │   │   ├── method-parameter-formatted-sql.yaml
    │       │   │   │   │   ├── render-template-input.yaml
    │       │   │   │   │   ├── template-var-safe.yaml
    │       │   │   │   │   ├── unescaped-template-extension.yaml
    │       │   │   │   │   └── user-input.yaml
    │       │   │   │   ├── user-input-escaped-with-safe.yaml
    │       │   │   │   └── user-input-with-unescaped-extension.yaml
    │       │   │   ├── jsonnet
    │       │   │   │   ├── example_rule.yaml
    │       │   │   │   ├── lib
    │       │   │   │   │   └── template.libsonnet
    │       │   │   │   ├── part_of_rule.unknown_yaml_extension
    │       │   │   │   └── python
    │       │   │   │   │   └── basic.jsonnet
    │       │   │   ├── language-filtering.yaml
    │       │   │   ├── languages.yaml
    │       │   │   ├── long.yaml
    │       │   │   ├── long_message.yaml
    │       │   │   ├── long_rule_id.yaml
    │       │   │   ├── match_based_id
    │       │   │   │   ├── duplicates.yaml
    │       │   │   │   ├── formatting.yaml
    │       │   │   │   ├── join.yaml
    │       │   │   │   └── operator.yaml
    │       │   │   ├── message_interpolation
    │       │   │   │   ├── interpolated_message.yaml
    │       │   │   │   ├── multi-pattern-inside.yaml
    │       │   │   │   ├── pattern-either.yaml
    │       │   │   │   ├── pattern-inside.yaml
    │       │   │   │   ├── pattern-not-inside.yaml
    │       │   │   │   └── propagated-constant.yaml
    │       │   │   ├── metavariable-comparison
    │       │   │   │   ├── metavariable-comparison-bad-content.yaml
    │       │   │   │   ├── metavariable-comparison-base.yaml
    │       │   │   │   ├── metavariable-comparison-strip.yaml
    │       │   │   │   └── metavariable-comparison.yaml
    │       │   │   ├── metavariable-pattern
    │       │   │   │   ├── test1.json
    │       │   │   │   └── test2.yaml
    │       │   │   ├── metavariable-regex
    │       │   │   │   ├── metavariable-regex-const-prop.yaml
    │       │   │   │   ├── metavariable-regex-multi-regex.yaml
    │       │   │   │   ├── metavariable-regex-multi-rule.yaml
    │       │   │   │   └── metavariable-regex.yaml
    │       │   │   ├── metavariable_propagation
    │       │   │   │   ├── metavariable-comparison-propagation.yaml
    │       │   │   │   └── metavariable-regex-propagation.yaml
    │       │   │   ├── metavariable_type.yaml
    │       │   │   ├── metrics_send
    │       │   │   │   ├── deep.yaml
    │       │   │   │   └── taint_assume_safe_numbers1.yaml
    │       │   │   ├── multi-focus-metavariable.yaml
    │       │   │   ├── multi_config_fail
    │       │   │   │   ├── error.yaml
    │       │   │   │   └── no_error.yaml
    │       │   │   ├── multiline.yaml
    │       │   │   ├── multiple-long.yaml
    │       │   │   ├── nested-pattern-either.yaml
    │       │   │   ├── nested-patterns.yaml
    │       │   │   ├── nosem.yaml
    │       │   │   ├── paths.yaml
    │       │   │   ├── pattern-not-regex
    │       │   │   │   ├── issue2465.yaml
    │       │   │   │   ├── regex-not-with-pattern-regex.yaml
    │       │   │   │   ├── regex-not.yaml
    │       │   │   │   └── regex-not2.yaml
    │       │   │   ├── pattern-regex-empty-file.yaml
    │       │   │   ├── patternless-sca-rule.yaml
    │       │   │   ├── per-rule-include.yaml
    │       │   │   ├── pro-rule-skipping-no-parsing.yaml
    │       │   │   ├── pro-rule-skipping.yaml
    │       │   │   ├── regex
    │       │   │   │   ├── numeric-regex-capture-rule.yaml
    │       │   │   │   ├── regex-any-language-alias-none.yaml
    │       │   │   │   ├── regex-any-language-invalid.yaml
    │       │   │   │   ├── regex-any-language-multiple-alias-none.yaml
    │       │   │   │   ├── regex-any-language-multiple.yaml
    │       │   │   │   ├── regex-any-language.yaml
    │       │   │   │   ├── regex-capture-groups.yaml
    │       │   │   │   ├── regex-child.yaml
    │       │   │   │   ├── regex-invalid.yaml
    │       │   │   │   ├── regex-nosemgrep.yaml
    │       │   │   │   ├── regex-top.yaml
    │       │   │   │   └── regex-utf8.yaml
    │       │   │   ├── rule-board-eqeq.yaml
    │       │   │   ├── rule_id
    │       │   │   │   ├── ;
    │       │   │   │   │   └── hello.yml
    │       │   │   │   ├── @
    │       │   │   │   │   └── hello.yml
    │       │   │   │   └── @npm-style
    │       │   │   │   │   └── hello.yml
    │       │   │   ├── secrets.yaml
    │       │   │   ├── severity_critical.yaml
    │       │   │   ├── severity_experiment.yaml
    │       │   │   ├── severity_inventory.yaml
    │       │   │   ├── sort-findings.yaml
    │       │   │   ├── source_rule_url.yaml
    │       │   │   ├── source_url.yaml
    │       │   │   ├── spacegrep
    │       │   │   │   ├── dockerfile.yaml
    │       │   │   │   ├── html.yaml
    │       │   │   │   ├── httpresponse.yaml
    │       │   │   │   ├── markdown.yaml
    │       │   │   │   ├── multi-lines.yaml
    │       │   │   │   ├── nosem-html.yaml
    │       │   │   │   └── terraform.yaml
    │       │   │   ├── stuff_stmt.yaml
    │       │   │   ├── syntax
    │       │   │   │   ├── bad-three-layers.yaml
    │       │   │   │   ├── bad1.yaml
    │       │   │   │   ├── bad10.yaml
    │       │   │   │   ├── bad11.yaml
    │       │   │   │   ├── bad12.yaml
    │       │   │   │   ├── bad13.yaml
    │       │   │   │   ├── bad14.yaml
    │       │   │   │   ├── bad15.yaml
    │       │   │   │   ├── bad16.yaml
    │       │   │   │   ├── bad2.yaml
    │       │   │   │   ├── bad3.yaml
    │       │   │   │   ├── bad4.yaml
    │       │   │   │   ├── bad5.yaml
    │       │   │   │   ├── bad6.yaml
    │       │   │   │   ├── bad7.yaml
    │       │   │   │   ├── bad8.yaml
    │       │   │   │   ├── bad9.yaml
    │       │   │   │   ├── badlanguage.yaml
    │       │   │   │   ├── badpaths1.yaml
    │       │   │   │   ├── badpaths2.yaml
    │       │   │   │   ├── badpattern.yaml
    │       │   │   │   ├── empty.yaml
    │       │   │   │   ├── good.yaml
    │       │   │   │   ├── good_info_severity.yaml
    │       │   │   │   ├── good_metadata.yaml
    │       │   │   │   ├── good_metadata_supply_chain.yaml
    │       │   │   │   ├── good_new_syntax.yaml
    │       │   │   │   ├── good_new_syntax_taint.yaml
    │       │   │   │   ├── good_new_syntax_taint_no_mode.yaml
    │       │   │   │   ├── invalid-key-name.yml
    │       │   │   │   ├── invalid-metavariable-regex.yml
    │       │   │   │   ├── invalid-patterns-key.yml
    │       │   │   │   ├── invalid.yaml
    │       │   │   │   ├── missing-field.yaml
    │       │   │   │   └── missing-toplevel.yaml
    │       │   │   ├── taint.yaml
    │       │   │   ├── taint_intrafile.yaml
    │       │   │   ├── taint_trace.yaml
    │       │   │   ├── test_test
    │       │   │   │   ├── directory
    │       │   │   │   │   └── basic.yaml
    │       │   │   │   ├── overlapping_rules.yaml
    │       │   │   │   ├── rule_that_timeout.yaml
    │       │   │   │   ├── rule_with_paths_include_bar_xml.yaml
    │       │   │   │   ├── suffixes
    │       │   │   │   │   └── this.that.check.yaml
    │       │   │   │   └── yaml_language
    │       │   │   │   │   └── yaml_language.yaml
    │       │   │   ├── two_matches.yaml
    │       │   │   ├── two_rules
    │       │   │   │   ├── eqeq.yaml
    │       │   │   │   └── func.yaml
    │       │   │   ├── two_rules_same_message.yaml
    │       │   │   ├── version-constraints.yaml
    │       │   │   ├── yaml_capture.yaml
    │       │   │   └── yaml_key.yaml
    │       │   ├── snapshots
    │       │   │   ├── test_aliengrep
    │       │   │   │   ├── test_aliengrep
    │       │   │   │   │   ├── rulesaliengrepbegin-end.yaml-aliengrepbegin-end.log
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesaliengrepdockerfile.yaml-aliengrepdockerfile
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesaliengrephtml.yaml-aliengrephtml.mustache
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesaliengrephttpresponse.yaml-aliengrephttpresponse.txt
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesaliengreplong-match.yaml-aliengreplong-match.txt
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesaliengrepmarkdown.yaml-aliengrepmarkdown.md
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesaliengrepmetavariable-pattern.yaml-aliengrepmetavariable-pattern.conf
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesaliengrepmulti-lines.yaml-aliengrepmulti-lines.java
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   └── rulesaliengrepterraform.yaml-aliengrepterraform.tf
    │       │   │   │   │   │   └── results.json
    │       │   │   │   └── test_aliengrep_nosem
    │       │   │   │   │   └── rulesaliengrepnosem-html.yaml-aliengrepnosem.html
    │       │   │   │   │       └── results.json
    │       │   │   ├── test_autofix
    │       │   │   │   ├── test_autofix_json_output
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── add-metadata-hcl.hcl-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── add-metadata-hcl.hcl-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── add-metadata-hcl.hcl-dryrun
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── add-metadata-hcl.hcl-fixed
    │       │   │   │   │   ├── autofix.yaml-autofix.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── autofix.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── autofix.yaml-autofix.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── autofix.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── autofix.yaml-autofix.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── autofix.py-dryrun
    │       │   │   │   │   ├── autofix.yaml-autofix.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── autofix.py-fixed
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── csv-writer.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── csv-writer.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── csv-writer.py-dryrun
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── csv-writer.py-fixed
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── defaulthttpclient.java-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── defaulthttpclient.java-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── defaulthttpclient.java-dryrun
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── defaulthttpclient.java-fixed
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── delete-partial-line.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── delete-partial-line.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── delete-partial-line.py-dryrun
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── delete-partial-line.py-fixed
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── django-none-password-default.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── django-none-password-default.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── django-none-password-default.py-dryrun
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── django-none-password-default.py-fixed
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── collision.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── collision.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── collision.py-dryrun
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── collision.py-fixed
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── flask-use-jsonify.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── flask-use-jsonify.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── flask-use-jsonify.py-dryrun
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── flask-use-jsonify.py-fixed
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── imported-entity.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── imported-entity.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── imported-entity.py-dryrun
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── imported-entity.py-fixed
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── java-string-wrap.java-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── java-string-wrap.java-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── java-string-wrap.java-dryrun
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── java-string-wrap.java-fixed
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── ocaml_paren_expr.ml-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── ocaml_paren_expr.ml-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── ocaml_paren_expr.ml-dryrun
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── ocaml_paren_expr.ml-fixed
    │       │   │   │   │   ├── order.yaml-order.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── order.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── order.yaml-order.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── order.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── order.yaml-order.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── order.py-dryrun
    │       │   │   │   │   ├── order.yaml-order.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── order.py-fixed
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── collision.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── collision.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── collision.py-dryrun
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── collision.py-fixed
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── python-assert-statement.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── python-assert-statement.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── python-assert-statement.py-dryrun
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── python-assert-statement.py-fixed
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── python-delete-import.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── python-delete-import.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── python-delete-import.py-dryrun
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── python-delete-import.py-fixed
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── python-ranges.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── python-ranges.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── python-ranges.py-dryrun
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── python-ranges.py-fixed
    │       │   │   │   │   ├── redundant.yaml-redundant.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── redundant.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── redundant.yaml-redundant.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── redundant.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── redundant.yaml-redundant.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── redundant.py-dryrun
    │       │   │   │   │   ├── redundant.yaml-redundant.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── redundant.py-fixed
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── replace-field-yaml.yaml-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── replace-field-yaml.yaml-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── replace-field-yaml.yaml-dryrun
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── replace-field-yaml.yaml-fixed
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── requests-use-timeout.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── requests-use-timeout.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── requests-use-timeout.py-dryrun
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── requests-use-timeout.py-fixed
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── three-autofixes.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── three-autofixes.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── three-autofixes.py-dryrun
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── three-autofixes.py-fixed
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── two-autofixes.txt-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── two-autofixes.txt-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── two-autofixes.txt-dryrun
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── two-autofixes.txt-fixed
    │       │   │   │   │   ├── utf-8.yaml-utf-8.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── utf-8.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── utf-8.yaml-utf-8.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── utf-8.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── utf-8.yaml-utf-8.py-text-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │   │   └── utf-8.py-dryrun
    │       │   │   │   │   └── utf-8.yaml-utf-8.py-text-not-dryrun
    │       │   │   │   │   │   └── autofix
    │       │   │   │   │   │       └── utf-8.py-fixed
    │       │   │   │   ├── test_autofix_json_output_osemfail
    │       │   │   │   │   ├── order.yaml-order.py-json-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │   │   └── order.py-dryrun
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   └── order.yaml-order.py-json-not-dryrun
    │       │   │   │   │   │   ├── autofix
    │       │   │   │   │   │       └── order.py-fixed
    │       │   │   │   │   │   └── results.json
    │       │   │   │   └── test_autofix_text_output
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── add-metadata-hcl.hcl-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── add-metadata-hcl.yaml-add-metadata-hcl.hcl-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── add-metadata-hcl.hcl-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── autofix.yaml-autofix.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── autofix.yaml-autofix.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── autofix.yaml-autofix.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── autofix.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── autofix.yaml-autofix.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── autofix.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── csv-writer.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── csv-writer.yaml-csv-writer.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── csv-writer.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── defaulthttpclient.java-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── defaulthttpclient.yaml-defaulthttpclient.java-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── defaulthttpclient.java-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── delete-partial-line.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── delete-partial-line.yaml-delete-partial-line.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── delete-partial-line.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── django-none-password-default.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── django-none-password-default.yaml-django-none-password-default.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── django-none-password-default.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── collision.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── exact-collision.yaml-collision.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── collision.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── flask-use-jsonify.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── flask-use-jsonify.yaml-flask-use-jsonify.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── flask-use-jsonify.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── imported-entity.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── imported-entity.yaml-imported-entity.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── imported-entity.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── java-string-wrap.java-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── java-string-wrap.yaml-java-string-wrap.java-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── java-string-wrap.java-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── ocaml_paren_expr.ml-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── ocaml_paren_expr.yaml-ocaml_paren_expr.ml-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── ocaml_paren_expr.ml-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── order.yaml-order.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── order.yaml-order.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── order.yaml-order.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── order.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── order.yaml-order.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── order.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── collision.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── overlapping-collision.yaml-collision.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── collision.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── python-assert-statement.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-assert-statement.yaml-python-assert-statement.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── python-assert-statement.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── python-delete-import.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-delete-import.yaml-python-delete-import.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── python-delete-import.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── python-ranges.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── python-ranges.yaml-python-ranges.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── python-ranges.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── redundant.yaml-redundant.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── redundant.yaml-redundant.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── redundant.yaml-redundant.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── redundant.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── redundant.yaml-redundant.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── redundant.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── replace-field-yaml.yaml-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── replace-field-yaml.yaml-replace-field-yaml.yaml-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── replace-field-yaml.yaml-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── requests-use-timeout.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── requests-use-timeout.yaml-requests-use-timeout.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── requests-use-timeout.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── three-autofixes.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── three-autofixes.yaml-three-autofixes.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── three-autofixes.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── two-autofixes.txt-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── two-autofixes.yaml-two-autofixes.txt-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── two-autofixes.txt-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── utf-8.yaml-utf-8.py-json-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── utf-8.yaml-utf-8.py-json-not-dryrun
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   ├── utf-8.yaml-utf-8.py-text-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │       │   └── utf-8.py-dryrun
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   │   │   └── utf-8.yaml-utf-8.py-text-not-dryrun
    │       │   │   │   │       ├── autofix
    │       │   │   │   │           └── utf-8.py-fixed
    │       │   │   │   │       ├── results.txt
    │       │   │   │   │       └── stderr.txt
    │       │   │   ├── test_baseline
    │       │   │   │   ├── test_all_intersect
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_crisscrossing_merges
    │       │   │   │   │   ├── bar-baz-v1
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── bar-baz
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── bar-foo-v1
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── bar-foo
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── baz-bar-v1
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── baz-bar
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── baz-foo-v1
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   ├── stderr.txt.new
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── baz-foo
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── foo-bar-v1
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── foo-bar
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   ├── foo-baz-v1
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   │   └── foo-baz
    │       │   │   │   │   │   ├── stderr.txt
    │       │   │   │   │   │   └── stdout.txt
    │       │   │   │   ├── test_dir_changed_to_file
    │       │   │   │   │   ├── diff.err
    │       │   │   │   │   ├── diff.out
    │       │   │   │   │   ├── full.err
    │       │   │   │   │   └── full.out
    │       │   │   │   ├── test_dir_symlink_changed
    │       │   │   │   │   ├── diff.err
    │       │   │   │   │   ├── diff.out
    │       │   │   │   │   ├── full.err
    │       │   │   │   │   └── full.out
    │       │   │   │   ├── test_file_changed_to_dir
    │       │   │   │   │   ├── diff.err
    │       │   │   │   │   ├── diff.out
    │       │   │   │   │   ├── full.err
    │       │   │   │   │   └── full.out
    │       │   │   │   ├── test_file_changed_to_symlink
    │       │   │   │   │   ├── diff.err
    │       │   │   │   │   ├── diff.out
    │       │   │   │   │   ├── full.err
    │       │   │   │   │   └── full.out
    │       │   │   │   ├── test_no_findings_baseline
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   ├── baseline_output.txt
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_no_findings_both
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   └── error.txt
    │       │   │   │   ├── test_no_findings_head
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   └── error.txt
    │       │   │   │   ├── test_no_intersection
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_not_git_directory
    │       │   │   │   │   └── error.txt
    │       │   │   │   ├── test_one_commit_with_baseline
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_renamed_dir
    │       │   │   │   │   ├── diff.err
    │       │   │   │   │   ├── diff.out
    │       │   │   │   │   ├── full.err
    │       │   │   │   │   └── full.out
    │       │   │   │   ├── test_renamed_file
    │       │   │   │   │   ├── case-insensitive
    │       │   │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   │   ├── baseline_output.txt
    │       │   │   │   │   │   ├── error.txt
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   │   └── case-sensitive
    │       │   │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   │   ├── baseline_output.txt
    │       │   │   │   │   │   ├── error.txt
    │       │   │   │   │   │   └── output.txt
    │       │   │   │   ├── test_some_intersection
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   ├── baseline_output.txt
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_staged_changes
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_symlink
    │       │   │   │   │   ├── baseline_error.txt
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_symlink_changed_to_file
    │       │   │   │   │   ├── diff.err
    │       │   │   │   │   ├── diff.out
    │       │   │   │   │   ├── full.err
    │       │   │   │   │   └── full.out
    │       │   │   │   ├── test_unstaged_changes
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── output.txt
    │       │   │   │   └── test_worktree_state_restored
    │       │   │   │   │   └── output.txt
    │       │   │   ├── test_exclude_include
    │       │   │   │   ├── test_exclude_include_file_list
    │       │   │   │   │   ├── x-ls-and-exclude-and-exclude0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude-and-exclude0
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude-and-exclude1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude-and-exclude1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude-and-include-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude-and-include
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude0
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude2-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-exclude2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-exclude-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-exclude
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-include0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-include0
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-include1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-include1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-skip-unknown-extensions-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include-and-skip-unknown-extensions
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include0
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include2-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include3-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-include3
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude-and-exclude0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude-and-exclude0-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude-and-exclude1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude-and-exclude1-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude-and-include-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude-and-include-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude0-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-exclude1-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-exclude-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-exclude-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-include0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-include0-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-include1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-include1-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-skip-unknown-extensions-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include-and-skip-unknown-extensions-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include0-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include0-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include1-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include1-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   ├── x-ls-and-quiet-and-include2-v1
    │       │   │   │   │   │   └── files.list
    │       │   │   │   │   └── x-ls-and-quiet-and-include2-v2
    │       │   │   │   │   │   └── files.list
    │       │   │   │   ├── test_exclude_include_verbose_sorted_1
    │       │   │   │   │   └── results.err
    │       │   │   │   └── test_exclude_include_verbose_sorted_2
    │       │   │   │   │   └── results.err
    │       │   │   ├── test_exclude_include_formatting
    │       │   │   │   ├── test_exclude_include_verbose_sorted_1
    │       │   │   │   │   ├── results.err
    │       │   │   │   │   └── v1
    │       │   │   │   │   │   └── results.err
    │       │   │   │   └── test_exclude_include_verbose_sorted_2
    │       │   │   │   │   ├── results.err
    │       │   │   │   │   └── v1
    │       │   │   │   │       └── results.err
    │       │   │   ├── test_fixtest
    │       │   │   │   ├── test_fix_trailing_newline
    │       │   │   │   │   └── test-results.json
    │       │   │   │   ├── test_fixtest_test1_json
    │       │   │   │   │   └── test-results.json
    │       │   │   │   ├── test_fixtest_test1_no_json
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_fixtest_test2_json
    │       │   │   │   │   └── test-results.json
    │       │   │   │   ├── test_fixtest_test2_no_json
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_fixtest_test3_json
    │       │   │   │   │   └── test-results.json
    │       │   │   │   ├── test_fixtest_test3_no_json
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_fixtest_test4_json
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_fixtest_test4_no_json
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_fixtest_test5_json
    │       │   │   │   │   └── test-results.json
    │       │   │   │   ├── test_fixtest_test5_no_json
    │       │   │   │   │   └── output.txt
    │       │   │   │   └── test_missing_fixtest_fix_regex
    │       │   │   │   │   └── test-results.json
    │       │   │   ├── test_help
    │       │   │   │   └── test_help_text
    │       │   │   │   │   ├── --help
    │       │   │   │   │       └── help.txt
    │       │   │   │   │   └── -h
    │       │   │   │   │       └── help.txt
    │       │   │   ├── test_ignores
    │       │   │   │   ├── test_default_semgrepignore
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_file_not_relative_to_base_path
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_internal_explicit_semgrepignore
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_semgrepignore
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_max_target_bytes
    │       │   │   │   ├── test_max_target_bytes_output
    │       │   │   │   │   ├── 1.3R
    │       │   │   │   │   │   └── error.txt
    │       │   │   │   │   └── 1MB
    │       │   │   │   │   │   └── error.txt
    │       │   │   │   ├── test_max_target_bytes_output_pysemfail
    │       │   │   │   │   ├── 100B
    │       │   │   │   │   │   └── error.txt
    │       │   │   │   │   └── 1B
    │       │   │   │   │   │   └── error.txt
    │       │   │   │   └── test_max_target_bytes_results
    │       │   │   │   │   ├── 1.3R
    │       │   │   │   │       ├── error.txt
    │       │   │   │   │       └── results.json
    │       │   │   │   │   ├── 100B
    │       │   │   │   │       └── results.json
    │       │   │   │   │   ├── 1B
    │       │   │   │   │       ├── error.txt
    │       │   │   │   │       └── results.json
    │       │   │   │   │   └── 1MB
    │       │   │   │   │       ├── error.txt
    │       │   │   │   │       └── results.json
    │       │   │   ├── test_message_interpolation
    │       │   │   │   ├── test_message_interpolation
    │       │   │   │   │   ├── rulesmessage_interpolationmulti-pattern-inside.yaml-message_interpolationmulti_pattern_inside.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesmessage_interpolationmulti-pattern-inside.yaml-message_interpolationmulti_pattern_inside_nested.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesmessage_interpolationpattern-either.yaml-message_interpolationpattern_either_basic.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesmessage_interpolationpattern-inside.yaml-message_interpolationpattern_inside_basic.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesmessage_interpolationpattern-inside.yaml-message_interpolationpattern_inside_complex.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesmessage_interpolationpattern-not-inside.yaml-message_interpolationpattern_not_inside_basic.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesmessage_interpolationpattern-not-inside.yaml-message_interpolationpattern_not_inside_complex.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   └── rulesmessage_interpolationpropagated-constant.yaml-message_interpolationpropagated_constant.py
    │       │   │   │   │   │   └── results.json
    │       │   │   │   └── test_no_double_interpolation
    │       │   │   │   │   └── report.json
    │       │   │   ├── test_metavariable_comparison
    │       │   │   │   ├── test_metavariable_comparison_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_metavariable_comparison_rule_bad_content
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_metavariable_comparison_rule_base
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_metavariable_comparison_rule_strip
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_metavariable_propagation_comparison
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_metavariable_matching
    │       │   │   │   └── test_equivalence
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_metavariable_pattern
    │       │   │   │   ├── test1
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test2
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_metrics
    │       │   │   │   └── test_metrics_payload
    │       │   │   │   │   ├── pro_flag0
    │       │   │   │   │       └── metrics-payload.json
    │       │   │   │   │   └── pro_flag1_TODO
    │       │   │   │   │       └── metrics-payload.json
    │       │   │   ├── test_misc
    │       │   │   │   ├── test_basic_rule__absolute
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_basic_rule__local
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_basic_rule__relative
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_cdn_ruleset_resolution
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_critical_severity
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_deduplication
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_deduplication_different_message
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_deduplication_same_message
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_default_rule__file
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_default_rule__folder
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_experiment_finding_output
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_hidden_rule__explicit
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_hidden_rule__implicit
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_inventory_finding_output
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_language_filtering
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_match_rules_same_message
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_multi_subshell_input
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_multiline
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_multiple_configs_different_origins
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_multiple_configs_file
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_nested_pattern_either_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_nested_patterns_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_noextension_filtering
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_noextension_filtering_optimizations
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_noextension_with_explicit_lang
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_per_rule_include
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_script
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_show_supported_languages
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_sort_json_findings
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_sort_text_findings
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_stdin_input
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_subshell_input
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_taint_mode
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_terminal_output
    │       │   │   │   │   ├── results.txt
    │       │   │   │   │   └── results_second.txt
    │       │   │   │   ├── test_terminal_output_quiet
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_time
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_url_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_verbose
    │       │   │   │   │   └── results.txt
    │       │   │   ├── test_missing_file
    │       │   │   │   └── test_missing_file
    │       │   │   │   │   ├── error.json
    │       │   │   │   │   └── error.txt
    │       │   │   ├── test_nosemgrep
    │       │   │   │   ├── test_nosem_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_nosem_rule__invalid_id
    │       │   │   │   │   ├── error.json
    │       │   │   │   │   └── error.txt
    │       │   │   │   ├── test_nosem_rule__with_disable_nosem
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_regex_rule__nosemgrep
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_output
    │       │   │   │   ├── test_additional_outputs
    │       │   │   │   │   ├── emacs.txt.expected
    │       │   │   │   │   ├── gitlab_sast.json.expected
    │       │   │   │   │   ├── gitlab_secrets.json.expected
    │       │   │   │   │   ├── one.json.expected
    │       │   │   │   │   ├── sarif.json.expected
    │       │   │   │   │   ├── text.expected
    │       │   │   │   │   ├── two.json.expected
    │       │   │   │   │   └── vim.txt.expected
    │       │   │   │   ├── test_additional_outputs_with_format_flag
    │       │   │   │   │   ├── --emacs
    │       │   │   │   │   │   ├── result.expected
    │       │   │   │   │   │   └── result.json.expected
    │       │   │   │   │   ├── --gitlab-sast
    │       │   │   │   │   │   ├── result.expected
    │       │   │   │   │   │   └── result.json.expected
    │       │   │   │   │   ├── --gitlab-secrets
    │       │   │   │   │   │   ├── result.expected
    │       │   │   │   │   │   └── result.json.expected
    │       │   │   │   │   ├── --json
    │       │   │   │   │   │   ├── result.expected
    │       │   │   │   │   │   └── result.json.expected
    │       │   │   │   │   ├── --sarif
    │       │   │   │   │   │   ├── result.expected
    │       │   │   │   │   │   └── result.json.expected
    │       │   │   │   │   └── --vim
    │       │   │   │   │   │   ├── result.expected
    │       │   │   │   │   │   └── result.json.expected
    │       │   │   │   ├── test_additional_outputs_with_format_output_flag
    │       │   │   │   │   ├── --emacs
    │       │   │   │   │   │   ├── result.out.expected
    │       │   │   │   │   │   └── sarif.json.expected
    │       │   │   │   │   ├── --gitlab-sast
    │       │   │   │   │   │   ├── result.out.expected
    │       │   │   │   │   │   └── sarif.json.expected
    │       │   │   │   │   ├── --gitlab-secrets
    │       │   │   │   │   │   ├── result.out.expected
    │       │   │   │   │   │   └── sarif.json.expected
    │       │   │   │   │   ├── --json
    │       │   │   │   │   │   ├── result.out.expected
    │       │   │   │   │   │   └── sarif.json.expected
    │       │   │   │   │   ├── --sarif
    │       │   │   │   │   │   ├── result.out.expected
    │       │   │   │   │   │   └── sarif.json.expected
    │       │   │   │   │   └── --vim
    │       │   │   │   │   │   ├── result.out.expected
    │       │   │   │   │   │   └── sarif.json.expected
    │       │   │   │   ├── test_file_count_multifile
    │       │   │   │   │   ├── exclude_include
    │       │   │   │   │   │   └── result.out
    │       │   │   │   │   ├── language-filtering
    │       │   │   │   │   │   └── result.out
    │       │   │   │   │   └── multilangproj
    │       │   │   │   │   │   └── result.out
    │       │   │   │   ├── test_git_repo_output
    │       │   │   │   │   ├── False
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   │   └── True
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   ├── test_json_output_with_dataflow_traces
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_junit_xml_output
    │       │   │   │   │   └── results.xml
    │       │   │   │   ├── test_junit_xml_output_flag
    │       │   │   │   │   └── expected.xml
    │       │   │   │   ├── test_long_rule_id
    │       │   │   │   │   └── results.out
    │       │   │   │   ├── test_long_rule_id_long_text
    │       │   │   │   │   └── results.out
    │       │   │   │   ├── test_omit_experiment
    │       │   │   │   │   └── results.out
    │       │   │   │   ├── test_omit_inventory
    │       │   │   │   │   └── results.out
    │       │   │   │   ├── test_output_format
    │       │   │   │   │   ├── --emacs
    │       │   │   │   │   │   └── results.out
    │       │   │   │   │   ├── --gitlab-sast
    │       │   │   │   │   │   └── results.out
    │       │   │   │   │   ├── --gitlab-secrets
    │       │   │   │   │   │   └── results.out
    │       │   │   │   │   ├── --json
    │       │   │   │   │   │   └── results.out
    │       │   │   │   │   ├── --sarif
    │       │   │   │   │   │   └── results.out
    │       │   │   │   │   └── --vim
    │       │   │   │   │   │   └── results.out
    │       │   │   │   ├── test_output_highlighting
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_output_highlighting__force_color_and_no_color
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_output_highlighting__no_color
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_output_matching_explanations
    │       │   │   │   │   └── report.json
    │       │   │   │   ├── test_output_truncated_messages
    │       │   │   │   │   └── report.json
    │       │   │   │   ├── test_semgrepignore_ignore_log_json_report
    │       │   │   │   │   └── report.json
    │       │   │   │   ├── test_semgrepignore_ignore_log_json_report_pysemgrep
    │       │   │   │   │   ├── report.json
    │       │   │   │   │   └── v1
    │       │   │   │   │   │   └── report.json
    │       │   │   │   ├── test_semgrepignore_ignore_log_report
    │       │   │   │   │   └── report.txt
    │       │   │   │   ├── test_semgrepignore_ignore_log_report_pysemgrep
    │       │   │   │   │   ├── report.txt
    │       │   │   │   │   └── v1
    │       │   │   │   │   │   └── report.txt
    │       │   │   │   ├── test_yaml_capturing
    │       │   │   │   │   └── results.txt
    │       │   │   │   └── test_yaml_metavariables
    │       │   │   │   │   └── report.json
    │       │   │   ├── test_output_sarif
    │       │   │   │   ├── test_sarif_output
    │       │   │   │   │   ├── notrace-cwe_tag
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── notrace-eqeq
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── notrace-metavariable_type
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── notrace-source_rule_url
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── notrace-source_url
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── trace-cwe_tag
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── trace-eqeq
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── trace-metavariable_type
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   ├── trace-source_rule_url
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   └── trace-source_url
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_include_nosemgrep
    │       │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_osemfail
    │       │   │   │   │   ├── False-rule_and_target0
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   │   └── True-rule_and_target0
    │       │   │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_rule_board
    │       │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_when_errors
    │       │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_with_autofix
    │       │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_with_dataflow_traces
    │       │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_with_nosemgrep_and_error
    │       │   │   │   │   └── results.sarif
    │       │   │   │   ├── test_sarif_output_with_source
    │       │   │   │   │   └── results.sarif
    │       │   │   │   └── test_sarif_output_with_source_edit
    │       │   │   │   │   └── results.sarif
    │       │   │   ├── test_parse_rate_metrics
    │       │   │   │   └── test_parse_metrics
    │       │   │   │   │   └── parse-rates.json
    │       │   │   ├── test_paths
    │       │   │   │   └── test_paths
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_permissions
    │       │   │   │   ├── test_permissions_ls
    │       │   │   │   │   └── files.list
    │       │   │   │   ├── test_permissions_scan
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_permissions_scan_full_lax
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_permissions_scan_full_strict
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_process_limits
    │       │   │   │   ├── test_max_memory
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_spacegrep_timeout
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_timeout
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_timeout_eio
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_timeout_threshold
    │       │   │   │   │   ├── error.txt
    │       │   │   │   │   ├── error_2.txt
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_regex
    │       │   │   │   ├── test_invalid_regex_with_any_language_rule
    │       │   │   │   │   ├── error.json
    │       │   │   │   │   └── error.txt
    │       │   │   │   ├── test_metavariable_multi_regex_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_metavariable_propagation_regex
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_metavariable_regex_const_prop
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_metavariable_regex_multi_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_metavariable_regex_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_pattern_regex_empty_file
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__child
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__invalid_expression
    │       │   │   │   │   ├── error.json
    │       │   │   │   │   └── error.txt
    │       │   │   │   ├── test_regex_rule__issue2465
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__not
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__not2
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__pattern_regex_and_pattern_not_regex
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__top
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__utf8
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_rule__utf8_on_image
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_with_any_language_multiple_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_with_any_language_multiple_rule_none_alias
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_regex_with_any_language_rule
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_regex_with_any_language_rule_none_alias
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_rule_id
    │       │   │   │   └── test_rule_id_paths
    │       │   │   │   │   ├── rulesrule_id-rule_idhello.txt
    │       │   │   │   │       └── results.json
    │       │   │   │   │   └── rulesrule_idnpm-style-rule_idhello.txt
    │       │   │   │   │       └── results.json
    │       │   │   ├── test_rule_parser
    │       │   │   │   ├── test_rule_parser__failure__error_messages
    │       │   │   │   │   ├── bad-three-layers
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad1
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad10
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad11
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad12
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad13
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad14
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad15
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad16
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad2
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad3
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad4
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad5
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad6
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad7
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad8
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── bad9
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── badlanguage
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── badpaths1
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── badpaths2
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── badpattern
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── invalid
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   ├── missing-field
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   │   └── missing-toplevel
    │       │   │   │   │   │   ├── error-in-color.txt
    │       │   │   │   │   │   └── error.json
    │       │   │   │   ├── test_rule_parser_cli_pattern
    │       │   │   │   │   ├── error.json
    │       │   │   │   │   └── error.txt
    │       │   │   │   └── test_rule_parser_error_key_name_text
    │       │   │   │   │   └── error.txt
    │       │   │   ├── test_rule_validation
    │       │   │   │   ├── test_extra_top_level_valid
    │       │   │   │   │   └── rulesextra_field.yaml
    │       │   │   │   │   │   └── results.txt
    │       │   │   │   └── test_validation_of_invalid_rules
    │       │   │   │   │   ├── rulesinvalid-rulesadditional-invalid-pattern-operator.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesinvalid-metavariable-regex.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesinvalid-missing-top-item.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesinvalid-pattern-child.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesinvalid-pattern-operator.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesinvalid-pattern.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesmissing-hyphen.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesmissing-pattern.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   ├── rulesinvalid-rulesstring-pattern-under-patterns.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   │   │   └── rulesinvalid-rulesstring-pattern.yaml
    │       │   │   │   │       └── results.txt
    │       │   │   ├── test_semgrep_core_parse_error
    │       │   │   │   ├── test_file_parser__failure__error_messages
    │       │   │   │   │   ├── settings0
    │       │   │   │   │   │   ├── error.txt
    │       │   │   │   │   │   └── out.json
    │       │   │   │   │   └── settings1
    │       │   │   │   │   │   ├── error.txt
    │       │   │   │   │   │   └── out.json
    │       │   │   │   └── test_parse_errors
    │       │   │   │   │   └── errors.txt
    │       │   │   ├── test_severity
    │       │   │   │   ├── test_severity_error
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_severity_info
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_severity_multiple
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_severity_warning
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_spacegrep
    │       │   │   │   ├── test_spacegrep
    │       │   │   │   │   ├── rulesspacegrepdockerfile.yaml-spacegrepdockerfile
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesspacegrepdockerfile.yaml-spacegreproot.Dockerfile
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesspacegrephtml.yaml-spacegrephtml.mustache
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesspacegrephttpresponse.yaml-spacegrephttpresponse.txt
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesspacegrepmarkdown.yaml-spacegrepmarkdown.md
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   ├── rulesspacegrepmulti-lines.yaml-spacegrepmulti-lines.java
    │       │   │   │   │   │   └── results.json
    │       │   │   │   │   └── rulesspacegrepterraform.yaml-spacegrepterraform.tf
    │       │   │   │   │   │   └── results.json
    │       │   │   │   └── test_spacegrep_nosem
    │       │   │   │   │   └── rulesspacegrepnosem-html.yaml-spacegrepnosem.html
    │       │   │   │   │       └── results.json
    │       │   │   ├── test_test
    │       │   │   │   ├── test_cli_test_basic
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_cli_test_directory
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_cli_test_from_entrypoint
    │       │   │   │   │   └── output.txt
    │       │   │   │   ├── test_cli_test_ignore_rule_paths
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_cli_test_multiple_annotations
    │       │   │   │   │   └── results.txt
    │       │   │   │   ├── test_cli_test_suffixes
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_cli_test_yaml_language
    │       │   │   │   │   └── results.json
    │       │   │   │   ├── test_cli_todook_filtering
    │       │   │   │   │   └── results.json
    │       │   │   │   └── test_timeout
    │       │   │   │   │   └── results.json
    │       │   │   ├── test_version_constraints
    │       │   │   │   └── test_version_constraints
    │       │   │   │   │   └── results.json
    │       │   │   └── test_warnings
    │       │   │   │   └── test_semgrepignore_v2_warning
    │       │   │   │       └── results.txt
    │       │   ├── targets
    │       │   │   ├── aliengrep
    │       │   │   │   ├── begin-end.log
    │       │   │   │   ├── dockerfile
    │       │   │   │   ├── html.mustache
    │       │   │   │   ├── httpresponse.txt
    │       │   │   │   ├── long-match.txt
    │       │   │   │   ├── markdown.md
    │       │   │   │   ├── metavariable-pattern.conf
    │       │   │   │   ├── multi-lines.java
    │       │   │   │   ├── nosem.html
    │       │   │   │   └── terraform.tf
    │       │   │   ├── auto
    │       │   │   │   └── fingerprints
    │       │   │   │   │   └── inside.py
    │       │   │   ├── autofix
    │       │   │   │   ├── add-metadata-hcl.hcl
    │       │   │   │   ├── autofix.py
    │       │   │   │   ├── collision.py
    │       │   │   │   ├── csv-writer.py
    │       │   │   │   ├── defaulthttpclient.java
    │       │   │   │   ├── delete-partial-line.py
    │       │   │   │   ├── django-none-password-default.py
    │       │   │   │   ├── flask-use-jsonify.py
    │       │   │   │   ├── imported-entity.py
    │       │   │   │   ├── java-string-wrap.java
    │       │   │   │   ├── ocaml_paren_expr.ml
    │       │   │   │   ├── order.py
    │       │   │   │   ├── python-assert-statement.py
    │       │   │   │   ├── python-delete-import.py
    │       │   │   │   ├── python-ranges.py
    │       │   │   │   ├── redundant.py
    │       │   │   │   ├── replace-field-yaml.yaml
    │       │   │   │   ├── requests-use-timeout.py
    │       │   │   │   ├── three-autofixes.py
    │       │   │   │   ├── two-autofixes.txt
    │       │   │   │   └── utf-8.py
    │       │   │   ├── bad
    │       │   │   │   ├── basic_java.java
    │       │   │   │   ├── invalid_c_long.c
    │       │   │   │   ├── invalid_go.go
    │       │   │   │   ├── invalid_javascript.js
    │       │   │   │   └── invalid_python.py
    │       │   │   ├── basic.py
    │       │   │   ├── basic
    │       │   │   │   ├── README.md
    │       │   │   │   ├── bento.png
    │       │   │   │   ├── inside.py
    │       │   │   │   ├── metavariable-comparison-bad-content.py
    │       │   │   │   ├── metavariable-comparison-base.py
    │       │   │   │   ├── metavariable-comparison-strip.py
    │       │   │   │   ├── metavariable-comparison.py
    │       │   │   │   ├── metavariable-regex-multi-regex.py
    │       │   │   │   ├── metavariable-regex-multi-rule.py
    │       │   │   │   ├── metavariable-regex.py
    │       │   │   │   ├── nested-patterns.js
    │       │   │   │   ├── nosem.c
    │       │   │   │   ├── nosem.go
    │       │   │   │   ├── nosem.java
    │       │   │   │   ├── nosem.js
    │       │   │   │   ├── nosem.py
    │       │   │   │   ├── regex-any-language.html
    │       │   │   │   ├── regex-nosemgrep.txt
    │       │   │   │   ├── regex-utf8.txt
    │       │   │   │   ├── regex.py
    │       │   │   │   ├── simple_python_no_extension
    │       │   │   │   ├── stupid.js
    │       │   │   │   ├── stupid.py
    │       │   │   │   └── stupid_no_extension
    │       │   │   ├── ci
    │       │   │   │   └── foo.py
    │       │   │   ├── deduplication
    │       │   │   │   └── deduplication.py
    │       │   │   ├── dependency_aware
    │       │   │   │   ├── ansi
    │       │   │   │   │   ├── ansi.js
    │       │   │   │   │   ├── package.json
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── awscli-with-manifest
    │       │   │   │   │   ├── Pipfile
    │       │   │   │   │   ├── Pipfile.lock
    │       │   │   │   │   └── awscli_vuln.py
    │       │   │   │   ├── awscli
    │       │   │   │   │   ├── Pipfile.lock
    │       │   │   │   │   └── awscli_vuln.py
    │       │   │   │   ├── dart
    │       │   │   │   │   ├── pubspec.lock
    │       │   │   │   │   └── pubspec.yaml
    │       │   │   │   ├── deeply_nested_package_lock
    │       │   │   │   │   └── package-lock.json
    │       │   │   │   ├── empty_yarn
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── generic
    │       │   │   │   │   ├── generic.txt
    │       │   │   │   │   └── package-lock.json
    │       │   │   │   ├── go
    │       │   │   │   │   ├── go.mod
    │       │   │   │   │   └── sca.go
    │       │   │   │   ├── go_multi_newline
    │       │   │   │   │   ├── go.mod
    │       │   │   │   │   └── sca.go
    │       │   │   │   ├── go_toolchain
    │       │   │   │   │   ├── go.mod
    │       │   │   │   │   └── sca.go
    │       │   │   │   ├── gradle-arbitrary-comment
    │       │   │   │   │   ├── build.gradle
    │       │   │   │   │   ├── gradle.lockfile
    │       │   │   │   │   └── sca-gradle.java
    │       │   │   │   ├── gradle-direct
    │       │   │   │   │   ├── build.gradle
    │       │   │   │   │   └── gradle.lockfile
    │       │   │   │   ├── gradle-kts
    │       │   │   │   │   ├── build.gradle.kts
    │       │   │   │   │   ├── gradle.lockfile
    │       │   │   │   │   └── sca-gradle.java
    │       │   │   │   ├── gradle-no-comment
    │       │   │   │   │   ├── build.gradle
    │       │   │   │   │   ├── gradle.lockfile
    │       │   │   │   │   └── sca-gradle.java
    │       │   │   │   ├── gradle-no-lockfile-missing-gradlew
    │       │   │   │   │   ├── build.gradle
    │       │   │   │   │   └── sca-gradle.java
    │       │   │   │   ├── gradle-no-lockfile
    │       │   │   │   │   ├── .gitignore
    │       │   │   │   │   ├── build.gradle
    │       │   │   │   │   ├── gradle
    │       │   │   │   │   │   └── wrapper
    │       │   │   │   │   │   │   ├── gradle-wrapper.jar
    │       │   │   │   │   │   │   └── gradle-wrapper.properties
    │       │   │   │   │   ├── gradlew
    │       │   │   │   │   ├── gradlew.bat
    │       │   │   │   │   ├── sca-gradle.java
    │       │   │   │   │   └── semgrep-dependencies-init.gradle
    │       │   │   │   ├── gradle
    │       │   │   │   │   ├── build.gradle
    │       │   │   │   │   ├── gradle.lockfile
    │       │   │   │   │   └── sca-gradle.java
    │       │   │   │   ├── gradle_empty=
    │       │   │   │   │   └── gradle.lockfile
    │       │   │   │   ├── gradle_multi_project_no_lockfile
    │       │   │   │   │   ├── app
    │       │   │   │   │   │   ├── build.gradle.kts
    │       │   │   │   │   │   └── src
    │       │   │   │   │   │   │   ├── main
    │       │   │   │   │   │   │       └── java
    │       │   │   │   │   │   │       │   └── org
    │       │   │   │   │   │   │       │       └── example
    │       │   │   │   │   │   │       │           └── App.java
    │       │   │   │   │   │   │   └── test
    │       │   │   │   │   │   │       └── java
    │       │   │   │   │   │   │           └── org
    │       │   │   │   │   │   │               └── example
    │       │   │   │   │   │   │                   └── AppTest.java
    │       │   │   │   │   ├── gradle.properties
    │       │   │   │   │   ├── gradle
    │       │   │   │   │   │   ├── libs.versions.toml
    │       │   │   │   │   │   └── wrapper
    │       │   │   │   │   │   │   ├── gradle-wrapper.jar
    │       │   │   │   │   │   │   └── gradle-wrapper.properties
    │       │   │   │   │   ├── gradlew
    │       │   │   │   │   ├── gradlew.bat
    │       │   │   │   │   ├── lib
    │       │   │   │   │   │   ├── build.gradle.kts
    │       │   │   │   │   │   └── src
    │       │   │   │   │   │   │   └── main
    │       │   │   │   │   │   │       └── java
    │       │   │   │   │   │   │           └── com
    │       │   │   │   │   │   │               └── gradle
    │       │   │   │   │   │   │                   └── CustomLib.java
    │       │   │   │   │   └── settings.gradle.kts
    │       │   │   │   ├── gradle_trailing_newline
    │       │   │   │   │   └── gradle
    │       │   │   │   │   │   ├── build.gradle
    │       │   │   │   │   │   ├── gradle.lockfile
    │       │   │   │   │   │   └── sca-gradle.java
    │       │   │   │   ├── js
    │       │   │   │   │   ├── package-lock.json
    │       │   │   │   │   └── sca.js
    │       │   │   │   ├── lodash
    │       │   │   │   │   ├── useslodash.js
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── log4j
    │       │   │   │   │   ├── log4shell.java
    │       │   │   │   │   ├── maven_dep_tree.txt
    │       │   │   │   │   └── pom.xml
    │       │   │   │   ├── manifest_parse_error
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   └── pyproject.toml
    │       │   │   │   ├── maven-no-lockfile
    │       │   │   │   │   └── pom.xml
    │       │   │   │   ├── maven_dep_tree_extra_field
    │       │   │   │   │   └── maven_dep_tree.txt
    │       │   │   │   ├── maven_dep_tree_joined
    │       │   │   │   │   └── maven_dep_tree.txt
    │       │   │   │   ├── maven_dep_tree_optional
    │       │   │   │   │   └── maven_dep_tree.txt
    │       │   │   │   ├── maven_dep_tree_release_version
    │       │   │   │   │   └── maven_dep_tree.txt
    │       │   │   │   ├── mix
    │       │   │   │   │   ├── mix.exs
    │       │   │   │   │   └── mix.lock
    │       │   │   │   ├── monorepo
    │       │   │   │   │   ├── build.js
    │       │   │   │   │   ├── webapp1
    │       │   │   │   │   │   ├── app.js
    │       │   │   │   │   │   └── yarn.lock
    │       │   │   │   │   ├── webapp2
    │       │   │   │   │   │   ├── app.js
    │       │   │   │   │   │   └── yarn.lock
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── multi-dep-rule
    │       │   │   │   │   ├── bad.js
    │       │   │   │   │   ├── package-lock.json
    │       │   │   │   │   └── package.json
    │       │   │   │   ├── nested_package_lock
    │       │   │   │   │   └── package-lock.json
    │       │   │   │   ├── npm-empty
    │       │   │   │   │   └── package-lock.json
    │       │   │   │   ├── npm-malformed
    │       │   │   │   │   └── package-lock.json
    │       │   │   │   ├── nuget-large
    │       │   │   │   │   └── packages.lock.json
    │       │   │   │   ├── nuget
    │       │   │   │   │   └── packages.lock.json
    │       │   │   │   ├── nuget_no_lockfile
    │       │   │   │   │   └── NugetNoLockfile.csproj
    │       │   │   │   ├── osv_parsing
    │       │   │   │   │   ├── package-lock
    │       │   │   │   │   │   ├── commits.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── commits.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── empty.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── empty.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── files.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── files.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── nested-dependencies-dup.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── nested-dependencies-dup.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── nested-dependencies.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── nested-dependencies.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── one-package-dev.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── one-package-dev.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── one-package.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── one-package.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── scoped-packages.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── scoped-packages.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   ├── two-packages.v1
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   │   └── two-packages.v2
    │       │   │   │   │   │   │   └── package-lock.json
    │       │   │   │   │   ├── pipfile
    │       │   │   │   │   │   ├── empty
    │       │   │   │   │   │   │   └── Pipfile.lock
    │       │   │   │   │   │   ├── no-version
    │       │   │   │   │   │   │   └── Pipfile.lock
    │       │   │   │   │   │   ├── one-package-dev
    │       │   │   │   │   │   │   └── Pipfile.lock
    │       │   │   │   │   │   ├── one-package
    │       │   │   │   │   │   │   └── Pipfile.lock
    │       │   │   │   │   │   ├── two-packages-alt
    │       │   │   │   │   │   │   └── Pipfile.lock
    │       │   │   │   │   │   └── two-packages
    │       │   │   │   │   │   │   └── Pipfile.lock
    │       │   │   │   │   ├── pnpm
    │       │   │   │   │   │   ├── commits
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── empty
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── exotic
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── files
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── multiple-packages
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── multiple-versions
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── no-packages
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── one-package-dev
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── one-package-v6-lockfile
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── one-package
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── peer-dependencies-advanced
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── peer-dependencies
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── scoped-packages-v6-lockfile
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   ├── scoped-packages
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   │   └── tarball
    │       │   │   │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   │   ├── poetry
    │       │   │   │   │   │   ├── empty
    │       │   │   │   │   │   │   └── poetry.lock
    │       │   │   │   │   │   ├── one-package-with-metadata
    │       │   │   │   │   │   │   └── poetry.lock
    │       │   │   │   │   │   ├── one-package
    │       │   │   │   │   │   │   └── poetry.lock
    │       │   │   │   │   │   ├── source-git
    │       │   │   │   │   │   │   └── poetry.lock
    │       │   │   │   │   │   ├── source-legacy
    │       │   │   │   │   │   │   └── poetry.lock
    │       │   │   │   │   │   └── two-packages
    │       │   │   │   │   │   │   └── poetry.lock
    │       │   │   │   │   ├── requirements
    │       │   │   │   │   │   ├── empty
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   ├── file-format-example
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   ├── multiple-packages-constrained
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   ├── multiple-packages-mixed
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   ├── non-normalized-names
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   ├── one-package-constrained
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   ├── one-package-unconstrained
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   ├── only-comments
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   │   └── with-added-support
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   └── yarn
    │       │   │   │   │   │   ├── cache-compressionlevel.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── commits.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── commits.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── empty.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── empty.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── files.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── files.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── metadata-only.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── multiple-constraints.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── multiple-versions.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── multiple-versions.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── one-package.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── one-package.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── scoped-packages.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── scoped-packages.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── two-packages.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── two-packages.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   ├── versions-with-build-strings.v1
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   │   │   └── versions-with-build-strings.v2
    │       │   │   │   │   │       └── yarn.lock
    │       │   │   │   ├── package-lock-v3
    │       │   │   │   │   └── package-lock.json
    │       │   │   │   ├── package-lock_resolved_false
    │       │   │   │   │   └── package-lock.json
    │       │   │   │   ├── php
    │       │   │   │   │   ├── composer.json
    │       │   │   │   │   ├── composer.lock
    │       │   │   │   │   └── foo.php
    │       │   │   │   ├── pipenv-dependency-children
    │       │   │   │   │   ├── Pipfile
    │       │   │   │   │   └── Pipfile.lock
    │       │   │   │   ├── pipfile
    │       │   │   │   │   ├── Pipfile.lock
    │       │   │   │   │   └── sca-pipfile.py
    │       │   │   │   ├── pipfile_with_empty_dev-packages
    │       │   │   │   │   ├── Pipfile
    │       │   │   │   │   ├── Pipfile.lock
    │       │   │   │   │   └── sca-pipfile.py
    │       │   │   │   ├── pipfile_with_one_newline_between_sections
    │       │   │   │   │   ├── Pipfile
    │       │   │   │   │   ├── Pipfile.lock
    │       │   │   │   │   └── sca-pipfile.py
    │       │   │   │   ├── pipfile_with_uppercase_package_name
    │       │   │   │   │   ├── Pipfile.lock
    │       │   │   │   │   └── sca-pipfile.py
    │       │   │   │   ├── pipfile_with_vuln_in_dev-packages
    │       │   │   │   │   ├── Pipfile
    │       │   │   │   │   ├── Pipfile.lock
    │       │   │   │   │   └── sca-pipfile.py
    │       │   │   │   ├── pnpm-error-key
    │       │   │   │   │   ├── foo.js
    │       │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   ├── pnpm-v6
    │       │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   ├── pnpm-v9-no-snapshots-this-is-wrong-btw
    │       │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   ├── pnpm-v9
    │       │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   ├── pnpm-workspaces
    │       │   │   │   │   ├── foo.js
    │       │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   ├── pnpm
    │       │   │   │   │   ├── foo.js
    │       │   │   │   │   └── pnpm-lock.yaml
    │       │   │   │   ├── poetry
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   ├── pyproject.toml
    │       │   │   │   │   └── sca-poetry.py
    │       │   │   │   ├── poetry_comments
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   └── pyproject.toml
    │       │   │   │   ├── poetry_empty_table
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   └── pyproject.toml
    │       │   │   │   ├── poetry_quoted_key
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   └── pyproject.toml
    │       │   │   │   ├── poetry_trailing_newlines
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   └── pyproject.toml
    │       │   │   │   ├── poetry_with_arbitrary_starting_comment
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   ├── pyproject.toml
    │       │   │   │   │   └── sca-poetry.py
    │       │   │   │   ├── poetry_with_uppercase_package_name
    │       │   │   │   │   ├── poetry.lock
    │       │   │   │   │   ├── pyproject.toml
    │       │   │   │   │   └── sca-poetry.py
    │       │   │   │   ├── requirement
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirement.txt
    │       │   │   │   │   └── requirements.in
    │       │   │   │   ├── requirement_pip
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirement.pip
    │       │   │   │   │   └── requirements.in
    │       │   │   │   ├── requirements
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── requirements3
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements3.txt
    │       │   │   │   ├── requirements_folder
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_folder_dep_dupes
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_folder_no_src
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_folder_similar_deps
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_multiple_lockfiles
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   ├── requirements.txt
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_multiple_lockfiles_dep_dupes
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   ├── requirements.txt
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_multiple_lockfiles_dep_dupes_no_src
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   ├── requirements.txt
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_multiple_lockfiles_no_src
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   ├── requirements.txt
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_multiple_lockfiles_similar_deps
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   ├── requirements.txt
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.txt
    │       │   │   │   │   │   └── stage.txt
    │       │   │   │   ├── requirements_nested
    │       │   │   │   │   ├── a
    │       │   │   │   │   │   └── b
    │       │   │   │   │   │   │   ├── foo.py
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── requirements_nested_dep_dupes
    │       │   │   │   │   ├── a
    │       │   │   │   │   │   └── b
    │       │   │   │   │   │   │   ├── foo.py
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── requirements_nested_folder
    │       │   │   │   │   ├── a
    │       │   │   │   │   │   └── b
    │       │   │   │   │   │   │   ├── foo.py
    │       │   │   │   │   │   │   └── requirements
    │       │   │   │   │   │   │       ├── prod.txt
    │       │   │   │   │   │   │       └── stage.txt
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── requirements_nested_folder_dep_dupes
    │       │   │   │   │   ├── a
    │       │   │   │   │   │   └── b
    │       │   │   │   │   │   │   ├── foo.py
    │       │   │   │   │   │   │   └── requirements
    │       │   │   │   │   │   │       ├── prod.txt
    │       │   │   │   │   │   │       └── stage.txt
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── requirements_nested_folder_no_src
    │       │   │   │   │   ├── a
    │       │   │   │   │   │   └── b
    │       │   │   │   │   │   │   └── requirements
    │       │   │   │   │   │   │       ├── prod.txt
    │       │   │   │   │   │   │       └── stage.txt
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── requirements_nested_no_src
    │       │   │   │   │   ├── a
    │       │   │   │   │   │   └── b
    │       │   │   │   │   │   │   └── requirements.txt
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── requirements_pip
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements.pip
    │       │   │   │   ├── requirements_pip_folder
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements
    │       │   │   │   │   │   ├── prod.pip
    │       │   │   │   │   │   └── stage.pip
    │       │   │   │   ├── requirements_with_uppercase_package_name
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   ├── requirements.in
    │       │   │   │   │   └── requirements.txt
    │       │   │   │   ├── ruby-with-multiple-gem-sections
    │       │   │   │   │   ├── Gemfile.lock
    │       │   │   │   │   └── sca.rb
    │       │   │   │   ├── ruby-with-multiple-remotes
    │       │   │   │   │   ├── Gemfile.lock
    │       │   │   │   │   └── sca.rb
    │       │   │   │   ├── ruby
    │       │   │   │   │   ├── Gemfile.lock
    │       │   │   │   │   └── sca.rb
    │       │   │   │   ├── rust
    │       │   │   │   │   ├── Cargo.lock
    │       │   │   │   │   └── sca.rs
    │       │   │   │   ├── rust_short_lockfile
    │       │   │   │   │   ├── Cargo.lock
    │       │   │   │   │   └── sca.rs
    │       │   │   │   ├── setup-py-dynamic-resolution
    │       │   │   │   │   ├── foo.py
    │       │   │   │   │   └── setup.py
    │       │   │   │   ├── swiftpm
    │       │   │   │   │   ├── v1
    │       │   │   │   │   │   ├── Package.resolved
    │       │   │   │   │   │   └── Package.swift
    │       │   │   │   │   ├── v2
    │       │   │   │   │   │   ├── Package.resolved
    │       │   │   │   │   │   └── Package.swift
    │       │   │   │   │   └── v3
    │       │   │   │   │   │   ├── Package.resolved
    │       │   │   │   │   │   └── Package.swift
    │       │   │   │   ├── swiftpm_missing_version
    │       │   │   │   │   ├── Package.resolved
    │       │   │   │   │   └── Package.swift
    │       │   │   │   ├── transitive_and_direct
    │       │   │   │   │   ├── direct_reachable_transitive_unreachable
    │       │   │   │   │   │   ├── bad.js
    │       │   │   │   │   │   ├── package-lock.json
    │       │   │   │   │   │   └── package.json
    │       │   │   │   │   └── transitive_not_reachable_if_direct
    │       │   │   │   │   │   ├── bad.js
    │       │   │   │   │   │   ├── package-lock.json
    │       │   │   │   │   │   └── package.json
    │       │   │   │   ├── unreachable_multiple_copies
    │       │   │   │   │   ├── package.json
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── uv
    │       │   │   │   │   ├── README.md
    │       │   │   │   │   ├── hello.py
    │       │   │   │   │   ├── pyproject.toml
    │       │   │   │   │   └── uv.lock
    │       │   │   │   ├── yarn-v1-without-version-constraint
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── yarn
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── yarn2
    │       │   │   │   │   ├── foo.js
    │       │   │   │   │   ├── package.json
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   ├── yarn_at_in_version
    │       │   │   │   │   └── yarn.lock
    │       │   │   │   └── yarn_multi_hash
    │       │   │   │   │   └── yarn.lock
    │       │   │   ├── empty
    │       │   │   │   └── totally_empty_file
    │       │   │   ├── equivalence
    │       │   │   │   └── open_redirect.py
    │       │   │   ├── error_management
    │       │   │   │   ├── r2c_nosemgrep_was_fatal.py
    │       │   │   │   └── r2c_was_fatal.py
    │       │   │   ├── exclude_include
    │       │   │   │   ├── excluded
    │       │   │   │   │   ├── excluded.js
    │       │   │   │   │   └── included.js
    │       │   │   │   └── included
    │       │   │   │   │   ├── excluded.js
    │       │   │   │   │   ├── included.js
    │       │   │   │   │   └── included.vue
    │       │   │   ├── fixtest
    │       │   │   │   ├── basic.fixed.go
    │       │   │   │   ├── basic.go
    │       │   │   │   ├── no_associated_fixed.py
    │       │   │   │   ├── test1.fixed.py
    │       │   │   │   ├── test1.py
    │       │   │   │   ├── test2.py
    │       │   │   │   ├── test3.fixed.py
    │       │   │   │   ├── test3.py
    │       │   │   │   ├── test4.fixed.py
    │       │   │   │   └── test4.py
    │       │   │   ├── ignores
    │       │   │   │   ├── .gitignore
    │       │   │   │   ├── .semgrepignore
    │       │   │   │   ├── find.js
    │       │   │   │   ├── ignore.min.js
    │       │   │   │   ├── ignore_test.js
    │       │   │   │   ├── ok
    │       │   │   │   │   └── find.js
    │       │   │   │   └── tests
    │       │   │   │   │   └── ignore.js
    │       │   │   ├── ignores_default
    │       │   │   │   ├── .gitignore
    │       │   │   │   ├── find.js
    │       │   │   │   ├── ignore.min.js
    │       │   │   │   └── ignore_test.go
    │       │   │   ├── image
    │       │   │   │   └── semgrep.png
    │       │   │   ├── join_rules
    │       │   │   │   ├── recursive
    │       │   │   │   │   ├── flask-deep-stored-xss-example
    │       │   │   │   │   │   └── targets
    │       │   │   │   │   │   │   └── app
    │       │   │   │   │   │   │       ├── app.py
    │       │   │   │   │   │   │       ├── deep.py
    │       │   │   │   │   │   │       ├── deeper.py
    │       │   │   │   │   │   │       └── templates
    │       │   │   │   │   │   │           └── user.html.j2
    │       │   │   │   │   └── java-callgraph-example
    │       │   │   │   │   │   ├── vulnado-chain-broken
    │       │   │   │   │   │       └── src
    │       │   │   │   │   │       │   └── main
    │       │   │   │   │   │       │       └── java
    │       │   │   │   │   │       │           └── com
    │       │   │   │   │   │       │               └── scalesec
    │       │   │   │   │   │       │                   └── vulnado
    │       │   │   │   │   │       │                       ├── LoginController.java
    │       │   │   │   │   │       │                       ├── User.java
    │       │   │   │   │   │       │                       └── VulnadoApplication.java
    │       │   │   │   │   │   └── vulnado
    │       │   │   │   │   │       ├── LoginController.java
    │       │   │   │   │   │       ├── User.java
    │       │   │   │   │   │       └── VulnadoApplication.java
    │       │   │   │   ├── user-input-escaped-with-safe
    │       │   │   │   │   ├── app.py
    │       │   │   │   │   └── search.html
    │       │   │   │   └── user-input-with-unescaped-extension
    │       │   │   │   │   ├── launch.htm.j2
    │       │   │   │   │   └── views.py
    │       │   │   ├── language-filtering
    │       │   │   │   ├── call-f.js
    │       │   │   │   └── call-f.py
    │       │   │   ├── long_text.py
    │       │   │   ├── ls
    │       │   │   │   └── rules.yaml
    │       │   │   ├── match_based_id
    │       │   │   │   ├── after
    │       │   │   │   │   ├── ellipse.c
    │       │   │   │   │   ├── formatting.c
    │       │   │   │   │   ├── join.py
    │       │   │   │   │   ├── meta-change.c
    │       │   │   │   │   ├── operator.c
    │       │   │   │   │   └── taint.py
    │       │   │   │   ├── before
    │       │   │   │   │   ├── ellipse.c
    │       │   │   │   │   ├── formatting.c
    │       │   │   │   │   ├── join.py
    │       │   │   │   │   ├── meta-change.c
    │       │   │   │   │   ├── operator.c
    │       │   │   │   │   └── taint.py
    │       │   │   │   └── duplicates
    │       │   │   │   │   ├── duplicate1.py
    │       │   │   │   │   └── duplicate2.py
    │       │   │   ├── message_interpolation
    │       │   │   │   ├── multi_pattern_inside.py
    │       │   │   │   ├── multi_pattern_inside_nested.py
    │       │   │   │   ├── pattern_either_basic.py
    │       │   │   │   ├── pattern_inside_basic.py
    │       │   │   │   ├── pattern_inside_complex.py
    │       │   │   │   ├── pattern_not_inside_basic.py
    │       │   │   │   ├── pattern_not_inside_complex.py
    │       │   │   │   ├── propagated_constant.py
    │       │   │   │   └── target_with_metavariable.py
    │       │   │   ├── metavariable-pattern
    │       │   │   │   ├── test1.yml
    │       │   │   │   └── test2.php
    │       │   │   ├── metavariable_propagation
    │       │   │   │   ├── metavariable-comparison-propagation.py
    │       │   │   │   ├── metavariable-regex-const-prop.dockerfile
    │       │   │   │   └── metavariable-regex-propagation.py
    │       │   │   ├── metrics_send
    │       │   │   │   ├── MoviesController.cs
    │       │   │   │   ├── MvcMovieContext.cs
    │       │   │   │   └── taint_assume_safe_numbers1.java
    │       │   │   ├── multi-focus-metavariable.py
    │       │   │   ├── multilangproj
    │       │   │   │   ├── code.js
    │       │   │   │   ├── math.ml
    │       │   │   │   └── script.py
    │       │   │   ├── multiline
    │       │   │   │   └── stupid.py
    │       │   │   ├── nosem_invalid_id
    │       │   │   │   └── nosem_invalid_id.js
    │       │   │   ├── nosemgrep
    │       │   │   │   ├── eqeq-nosemgrep.py
    │       │   │   │   └── multiple-nosemgrep.py
    │       │   │   ├── parse_metrics
    │       │   │   │   ├── lexical-error.scala
    │       │   │   │   ├── ok.ml
    │       │   │   │   ├── ok.php
    │       │   │   │   ├── ok.rb
    │       │   │   │   ├── ok.scala
    │       │   │   │   ├── parse-error.scala
    │       │   │   │   ├── partial-parse-error.rb
    │       │   │   │   └── rules.yaml
    │       │   │   ├── pattern-not-regex
    │       │   │   │   └── issue2465.requirements.txt
    │       │   │   ├── per-rule-include
    │       │   │   │   ├── dont-scan-me.py
    │       │   │   │   └── scan-me.py
    │       │   │   ├── permissions
    │       │   │   │   └── README
    │       │   │   ├── pro-rule-skipping-no-parsing
    │       │   │   │   └── x.cls
    │       │   │   ├── pro-rule-skipping
    │       │   │   │   └── x.cls
    │       │   │   ├── rule_id
    │       │   │   │   └── hello.txt
    │       │   │   ├── script
    │       │   │   │   └── bad
    │       │   │   ├── semgrep-publish
    │       │   │   │   ├── invalid
    │       │   │   │   │   └── invalid.yaml
    │       │   │   │   ├── multirule
    │       │   │   │   │   └── multirule.yaml
    │       │   │   │   └── valid
    │       │   │   │   │   ├── valid1.yaml
    │       │   │   │   │   └── valid2.yaml
    │       │   │   ├── simple.yaml
    │       │   │   ├── sort-findings
    │       │   │   │   ├── b.py
    │       │   │   │   ├── c.py
    │       │   │   │   └── z
    │       │   │   │   │   └── a.py
    │       │   │   ├── spacegrep
    │       │   │   │   ├── dockerfile
    │       │   │   │   ├── html.mustache
    │       │   │   │   ├── httpresponse.txt
    │       │   │   │   ├── markdown.md
    │       │   │   │   ├── multi-lines.java
    │       │   │   │   ├── nosem.html
    │       │   │   │   ├── root.Dockerfile
    │       │   │   │   └── terraform.tf
    │       │   │   ├── spacegrep_timeout
    │       │   │   │   └── gnu-lgplv2.txt
    │       │   │   ├── synthesizing
    │       │   │   │   └── ex1.py
    │       │   │   ├── taint
    │       │   │   │   ├── taint.py
    │       │   │   │   ├── taint_intrafile.py
    │       │   │   │   └── taint_trace.cpp
    │       │   │   ├── test_test
    │       │   │   │   ├── basic.py
    │       │   │   │   ├── directory
    │       │   │   │   │   └── basic.py
    │       │   │   │   ├── foo.xml
    │       │   │   │   ├── long.py
    │       │   │   │   ├── multiple_annotations.py
    │       │   │   │   ├── suffixes
    │       │   │   │   │   └── this.that.check.py
    │       │   │   │   ├── todook.py
    │       │   │   │   └── yaml_language
    │       │   │   │   │   └── yaml_language.test.yaml
    │       │   │   ├── version-constraints
    │       │   │   │   └── x.py
    │       │   │   └── yaml
    │       │   │   │   ├── target.yaml
    │       │   │   │   └── yaml_capture.yaml
    │       │   ├── test_aliengrep.py
    │       │   ├── test_autofix.py
    │       │   ├── test_baseline.py
    │       │   ├── test_exclude_include.py
    │       │   ├── test_exclude_include_formatting.py
    │       │   ├── test_fixtest.py
    │       │   ├── test_help.py
    │       │   ├── test_ignores.py
    │       │   ├── test_max_target_bytes.py
    │       │   ├── test_message_interpolation.py
    │       │   ├── test_metavariable_comparison.py
    │       │   ├── test_metavariable_matching.py
    │       │   ├── test_metavariable_pattern.py
    │       │   ├── test_metrics.py
    │       │   ├── test_misc.py
    │       │   ├── test_missing_file.py
    │       │   ├── test_multi_config_fail.py
    │       │   ├── test_nosemgrep.py
    │       │   ├── test_output.py
    │       │   ├── test_output_sarif.py
    │       │   ├── test_parse_rate_metrics.py
    │       │   ├── test_paths.py
    │       │   ├── test_permissions.py
    │       │   ├── test_process_limits.py
    │       │   ├── test_regex.py
    │       │   ├── test_rule_id.py
    │       │   ├── test_rule_parser.py
    │       │   ├── test_rule_validation.py
    │       │   ├── test_semgrep_core_error.py
    │       │   ├── test_semgrep_core_parse_error.py
    │       │   ├── test_severity.py
    │       │   ├── test_show.py
    │       │   ├── test_spacegrep.py
    │       │   ├── test_target_selection.py
    │       │   ├── test_test.py
    │       │   ├── test_version.py
    │       │   ├── test_version_constraints.py
    │       │   └── test_warnings.py
    │       └── unit
    │       │   ├── parsers
    │       │       └── test_pnpm.py
    │       │   ├── snapshots
    │       │       └── test_rule_match
    │       │       │   ├── test_rule_match_to_app_finding
    │       │       │       └── results.json
    │       │       │   └── test_rule_match_to_app_finding_historical_info
    │       │       │       └── results.json
    │       │   ├── targeting
    │       │       ├── test_exclude.py
    │       │       ├── test_include.py
    │       │       ├── test_size_limit.py
    │       │       └── test_target_manager.py
    │       │   ├── test_baseline.py
    │       │   ├── test_bytesize.py
    │       │   ├── test_clean_project_url.py
    │       │   ├── test_config_resolver.py
    │       │   ├── test_engine_type.py
    │       │   ├── test_error_handler.py
    │       │   ├── test_filter_changed_subprojects.py
    │       │   ├── test_filter_dependency_aware_rules.py
    │       │   ├── test_filter_exclude_rule.py
    │       │   ├── test_join_rule.py
    │       │   ├── test_match_hashes.py
    │       │   ├── test_meta.py
    │       │   ├── test_metric_manager.py
    │       │   ├── test_paths_to_transitivity.py
    │       │   ├── test_project_config.py
    │       │   ├── test_resolve_dependency_source.py
    │       │   ├── test_resolve_subprojects.py
    │       │   ├── test_rule.py
    │       │   ├── test_rule_match.py
    │       │   ├── test_semgrep_test.py
    │       │   ├── test_semver_matching.py
    │       │   ├── test_subproject.py
    │       │   ├── test_subproject_matchers.py
    │       │   ├── test_version.py
    │       │   └── test_yaml_parsing.py
    │   ├── fixtures.py
    │   ├── performance
    │       ├── targets_perf_sca
    │       │   ├── 100k
    │       │   │   ├── Gemfile.lock
    │       │   │   ├── Pipfile.lock
    │       │   │   ├── go.mod
    │       │   │   ├── gradle.lockfile
    │       │   │   ├── maven_dep_tree.txt
    │       │   │   ├── package-lock.json
    │       │   │   ├── poetry.lock
    │       │   │   ├── requirements.txt
    │       │   │   └── yarn.lock
    │       │   ├── 10k
    │       │   │   ├── Gemfile.lock
    │       │   │   ├── Pipfile.lock
    │       │   │   ├── go.mod
    │       │   │   ├── gradle.lockfile
    │       │   │   ├── maven_dep_tree.txt
    │       │   │   ├── package-lock.json
    │       │   │   ├── poetry.lock
    │       │   │   ├── requirements.txt
    │       │   │   └── yarn.lock
    │       │   ├── 50k
    │       │   │   ├── Gemfile.lock
    │       │   │   ├── Pipfile.lock
    │       │   │   ├── go.mod
    │       │   │   ├── gradle.lockfile
    │       │   │   ├── maven_dep_tree.txt
    │       │   │   ├── package-lock.json
    │       │   │   ├── poetry.lock
    │       │   │   ├── requirements.txt
    │       │   │   └── yarn.lock
    │       │   └── readme.txt
    │       └── test_semdep.py
    │   ├── qa
    │       ├── __init__.py
    │       ├── public_repos.py
    │       ├── rules
    │       │   └── regex-sentinel.yaml
    │       └── test_public_repos.py
    │   └── semgrep_runner.py
├── cygwin-env.mk
├── debug
├── dev
    ├── optional.opam
    └── required.opam
├── devShells.nix
├── dune
├── dune-project
├── flake.lock
├── flake.nix
├── images
    ├── semgrep-api-token.jpg
    ├── semgrep-auto-config-example.jpg
    ├── semgrep-ci-cd-popup.jpg
    ├── semgrep-example-rules-editor.jpg
    ├── semgrep-login.jpg
    ├── semgrep-logo-dark.svg
    ├── semgrep-logo-light.svg
    ├── semgrep-main-image.jpg
    └── semgrep-scan-cli.jpg
├── interfaces
    ├── Parsing_stats.atd
    ├── Rule_options.atd
    ├── Semgrep_prefilter.atd
    ├── notes.txt
    └── semgrep_interfaces
├── languages
    ├── bash
    │   ├── ast
    │   │   ├── AST_bash.ml
    │   │   ├── AST_bash_builder.ml
    │   │   ├── AST_bash_builder.mli
    │   │   ├── AST_bash_loc.ml
    │   │   ├── AST_bash_loc.mli
    │   │   └── dune
    │   ├── generic
    │   │   ├── Bash_to_generic.ml
    │   │   ├── Bash_to_generic.mli
    │   │   └── dune
    │   └── tree-sitter
    │   │   ├── Parse_bash_tree_sitter.ml
    │   │   ├── Parse_bash_tree_sitter.mli
    │   │   └── dune
    ├── cairo
    │   └── generic
    │   │   ├── Parse_cairo_tree_sitter.ml
    │   │   ├── Parse_cairo_tree_sitter.mli
    │   │   └── dune
    ├── circom
    │   └── generic
    │   │   ├── Parse_circom_tree_sitter.ml
    │   │   ├── Parse_circom_tree_sitter.mli
    │   │   └── dune
    ├── cpp
    │   ├── ast
    │   │   ├── Log_parser_cpp.ml
    │   │   ├── ast_cpp.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── cpp_to_generic.ml
    │   │   ├── cpp_to_generic.mli
    │   │   └── dune
    │   ├── menhir
    │   │   ├── authors.txt
    │   │   ├── conflicts.txt
    │   │   ├── copyright.txt
    │   │   ├── credits.txt
    │   │   ├── dune
    │   │   ├── flag_parsing_cpp.ml
    │   │   ├── lexer_cpp.mll
    │   │   ├── license.txt
    │   │   ├── notes.txt
    │   │   ├── parse_cpp.ml
    │   │   ├── parse_cpp.mli
    │   │   ├── parser_cpp.mly
    │   │   ├── parser_cpp_mly_helper.ml
    │   │   ├── parsing_hacks.ml
    │   │   ├── parsing_hacks.mli
    │   │   ├── parsing_hacks_cpp.ml
    │   │   ├── parsing_hacks_cpp.mli
    │   │   ├── parsing_hacks_define.ml
    │   │   ├── parsing_hacks_define.mli
    │   │   ├── parsing_hacks_lib.ml
    │   │   ├── parsing_hacks_lib.mli
    │   │   ├── parsing_hacks_pp.ml
    │   │   ├── parsing_hacks_pp.mli
    │   │   ├── parsing_hacks_typedef.ml
    │   │   ├── parsing_hacks_typedef.mli
    │   │   ├── parsing_recovery_cpp.ml
    │   │   ├── parsing_recovery_cpp.mli
    │   │   ├── pp_token.ml
    │   │   ├── pp_token.mli
    │   │   ├── token_cpp.ml
    │   │   ├── token_cpp.mli
    │   │   ├── token_helpers_cpp.ml
    │   │   ├── token_helpers_cpp.mli
    │   │   ├── token_views_context.ml
    │   │   ├── token_views_context.mli
    │   │   ├── token_views_cpp.ml
    │   │   ├── token_views_cpp.mli
    │   │   ├── type_cpp.ml
    │   │   ├── type_cpp.mli
    │   │   ├── unit_parsing_cpp.ml
    │   │   └── unit_parsing_cpp.mli
    │   ├── orig_spec
    │   │   ├── orig_c.mly
    │   │   └── orig_cpp.mly
    │   └── tree-sitter
    │   │   ├── Parse_cpp_tree_sitter.ml
    │   │   ├── Parse_cpp_tree_sitter.mli
    │   │   ├── Preprocessor_cpp.ml
    │   │   ├── Preprocessor_cpp.mli
    │   │   └── dune
    ├── csharp
    │   └── generic
    │   │   ├── Parse_csharp_tree_sitter.ml
    │   │   ├── Parse_csharp_tree_sitter.mli
    │   │   └── dune
    ├── dart
    │   └── generic
    │   │   ├── Parse_dart_tree_sitter.ml
    │   │   ├── Parse_dart_tree_sitter.mli
    │   │   └── dune
    ├── dockerfile
    │   ├── ast
    │   │   ├── AST_dockerfile.ml
    │   │   ├── AST_dockerfile_loc.ml
    │   │   ├── AST_dockerfile_loc.mli
    │   │   └── dune
    │   ├── generic
    │   │   ├── Dockerfile_to_generic.ml
    │   │   ├── Dockerfile_to_generic.mli
    │   │   └── dune
    │   └── tree-sitter
    │   │   ├── Parse_dockerfile_tree_sitter.ml
    │   │   ├── Parse_dockerfile_tree_sitter.mli
    │   │   └── dune
    ├── go
    │   ├── ast
    │   │   ├── ast_go.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── dune
    │   │   ├── go_to_generic.ml
    │   │   └── go_to_generic.mli
    │   ├── menhir
    │   │   ├── conflicts.txt
    │   │   ├── dune
    │   │   ├── lexer_go.mll
    │   │   ├── pad.txt
    │   │   ├── parse_go.ml
    │   │   ├── parse_go.mli
    │   │   ├── parser_go.mly
    │   │   ├── parsing_hacks_go.ml
    │   │   ├── parsing_hacks_go.mli
    │   │   ├── token_helpers_go.ml
    │   │   ├── token_helpers_go.mli
    │   │   ├── unit_parsing_go.ml
    │   │   └── unit_parsing_go.mli
    │   ├── orig_spec
    │   │   ├── go.y
    │   │   ├── lex.go
    │   │   └── rest_todo
    │   └── tree-sitter
    │   │   ├── Parse_go_tree_sitter.ml
    │   │   ├── Parse_go_tree_sitter.mli
    │   │   └── dune
    ├── hack
    │   └── generic
    │   │   ├── Parse_hack_tree_sitter.ml
    │   │   ├── Parse_hack_tree_sitter.mli
    │   │   └── dune
    ├── html
    │   └── generic
    │   │   ├── Parse_html_tree_sitter.ml
    │   │   ├── Parse_html_tree_sitter.mli
    │   │   └── dune
    ├── java
    │   ├── ast
    │   │   ├── Log_parser_java.ml
    │   │   ├── ast_java.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── dune
    │   │   ├── java_to_generic.ml
    │   │   └── java_to_generic.mli
    │   └── tree-sitter
    │   │   ├── Parse_java_tree_sitter.ml
    │   │   ├── Parse_java_tree_sitter.mli
    │   │   └── dune
    ├── javascript
    │   ├── ast
    │   │   ├── Log_parser_javascript.ml
    │   │   ├── ast_js.ml
    │   │   ├── dune
    │   │   ├── visitor_js.ml
    │   │   └── visitor_js.mli
    │   ├── generic
    │   │   ├── dune
    │   │   ├── js_to_generic.ml
    │   │   └── js_to_generic.mli
    │   ├── menhir
    │   │   ├── conflicts.txt
    │   │   ├── copyright.txt
    │   │   ├── dune
    │   │   ├── lexer_js.mll
    │   │   ├── license.txt
    │   │   ├── parse_js.ml
    │   │   ├── parse_js.mli
    │   │   ├── parser_js.mly
    │   │   ├── parsing_hacks_js.ml
    │   │   ├── parsing_hacks_js.mli
    │   │   ├── token_helpers_js.ml
    │   │   ├── token_helpers_js.mli
    │   │   ├── unit_parsing_js.ml
    │   │   └── unit_parsing_js.mli
    │   └── orig_spec
    │   │   └── orig.mly
    ├── json
    │   ├── ast
    │   │   ├── AST_json.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── dune
    │   │   ├── json_to_generic.ml
    │   │   └── json_to_generic.mli
    │   └── menhir
    │   │   ├── dune
    │   │   ├── parse_json.ml
    │   │   ├── parse_json.mli
    │   │   ├── test_parsing_json.ml
    │   │   ├── test_parsing_json.mli
    │   │   ├── unit_parsing_json.ml
    │   │   └── unit_parsing_json.mli
    ├── jsonnet
    │   ├── ast
    │   │   ├── AST_jsonnet.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── Jsonnet_to_generic.ml
    │   │   ├── Jsonnet_to_generic.mli
    │   │   └── dune
    │   └── tree-sitter
    │   │   ├── Parse_jsonnet_tree_sitter.ml
    │   │   ├── Parse_jsonnet_tree_sitter.mli
    │   │   └── dune
    ├── julia
    │   └── generic
    │   │   ├── Parse_julia_tree_sitter.ml
    │   │   ├── Parse_julia_tree_sitter.mli
    │   │   └── dune
    ├── kotlin
    │   └── generic
    │   │   ├── Parse_kotlin_tree_sitter.ml
    │   │   ├── Parse_kotlin_tree_sitter.mli
    │   │   └── dune
    ├── lisp
    │   └── tree-sitter
    │   │   ├── Parse_clojure_tree_sitter.ml
    │   │   ├── Parse_clojure_tree_sitter.mli
    │   │   └── dune
    ├── lua
    │   └── generic
    │   │   ├── Log_parser_lua.ml
    │   │   ├── Parse_lua_tree_sitter.ml
    │   │   ├── Parse_lua_tree_sitter.mli
    │   │   └── dune
    ├── move_on_aptos
    │   └── generic
    │   │   ├── Parse_move_on_aptos_tree_sitter.ml
    │   │   ├── Parse_move_on_aptos_tree_sitter.mli
    │   │   └── dune
    ├── move_on_sui
    │   └── generic
    │   │   ├── Log_parser_move.ml
    │   │   ├── Parse_move_on_sui_tree_sitter.ml
    │   │   ├── Parse_move_on_sui_tree_sitter.mli
    │   │   └── dune
    ├── ocaml
    │   ├── ast
    │   │   ├── AST_ocaml.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── dune
    │   │   ├── ocaml_to_generic.ml
    │   │   └── ocaml_to_generic.mli
    │   ├── menhir
    │   │   ├── dune
    │   │   ├── lexer_ml.mll
    │   │   ├── license_parser_ml_mly.txt
    │   │   ├── parse_ml.ml
    │   │   ├── parse_ml.mli
    │   │   ├── parser_ml.mly
    │   │   ├── token_helpers_ml.ml
    │   │   ├── token_helpers_ml.mli
    │   │   ├── unit_parsing_ml.ml
    │   │   └── unit_parsing_ml.mli
    │   ├── orig_spec
    │   │   ├── orig_ocaml.mly
    │   │   └── orig_ocaml_4_10_menhir.mly
    │   └── tree-sitter
    │   │   ├── Parse_ocaml_tree_sitter.ml
    │   │   ├── Parse_ocaml_tree_sitter.mli
    │   │   └── dune
    ├── php
    │   ├── ast
    │   │   ├── ast_php.ml
    │   │   ├── cst_php.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── dune
    │   │   ├── php_to_generic.ml
    │   │   └── php_to_generic.mli
    │   ├── menhir
    │   │   ├── ast_php_build.ml
    │   │   ├── ast_php_build.mli
    │   │   ├── conflicts.txt
    │   │   ├── dune
    │   │   ├── flag_parsing_php.ml
    │   │   ├── lexer_php.mll
    │   │   ├── parse_php.ml
    │   │   ├── parse_php.mli
    │   │   ├── parser_php.mly
    │   │   ├── parsing_hacks_php.ml
    │   │   ├── parsing_hacks_php.mli
    │   │   ├── token_helpers_php.ml
    │   │   ├── token_helpers_php.mli
    │   │   ├── unit_parsing_php.ml
    │   │   └── unit_parsing_php.mli
    │   ├── orig_spec
    │   │   ├── hphp-may-2012
    │   │   │   ├── hphp.x
    │   │   │   └── hphp.y
    │   │   ├── orig_php_5.x.mly
    │   │   ├── php-src-8.x
    │   │   │   ├── zend_language_parser.y
    │   │   │   └── zend_language_scanner.l
    │   │   └── xhp
    │   │   │   ├── xhp_orig_when_port.l
    │   │   │   └── xhp_orig_when_port.y
    │   └── tree-sitter
    │   │   ├── Parse_php_tree_sitter.ml
    │   │   ├── Parse_php_tree_sitter.mli
    │   │   └── dune
    ├── promql
    │   └── generic
    │   │   ├── Parse_promql_tree_sitter.ml
    │   │   ├── Parse_promql_tree_sitter.mli
    │   │   └── dune
    ├── protobuf
    │   └── generic
    │   │   ├── Parse_protobuf_tree_sitter.ml
    │   │   ├── Parse_protobuf_tree_sitter.mli
    │   │   └── dune
    ├── python
    │   ├── ast
    │   │   ├── AST_python.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── Python_to_generic.ml
    │   │   ├── Python_to_generic.mli
    │   │   └── dune
    │   ├── menhir
    │   │   ├── Flag_parsing_python.ml
    │   │   ├── Lexer_python.mll
    │   │   ├── Parse_python.ml
    │   │   ├── Parse_python.mli
    │   │   ├── Parser_python.mly
    │   │   ├── Parsing_hacks_python.ml
    │   │   ├── Parsing_hacks_python.mli
    │   │   ├── Token_helpers_python.ml
    │   │   ├── Token_helpers_python.mli
    │   │   ├── Unit_parsing_python.ml
    │   │   ├── Unit_parsing_python.mli
    │   │   ├── conflicts.txt
    │   │   ├── copyright.txt
    │   │   ├── dune
    │   │   ├── license.txt
    │   │   ├── modif-orig.txt
    │   │   └── readme.txt
    │   └── tree-sitter
    │   │   ├── Parse_python_tree_sitter.ml
    │   │   ├── Parse_python_tree_sitter.mli
    │   │   └── dune
    ├── ql
    │   ├── ast
    │   │   ├── AST_ql.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── QL_to_generic.ml
    │   │   ├── QL_to_generic.mli
    │   │   └── dune
    │   └── tree-sitter
    │   │   ├── Parse_ql_tree_sitter.ml
    │   │   ├── Parse_ql_tree_sitter.mli
    │   │   └── dune
    ├── r
    │   └── generic
    │   │   ├── Parse_r_tree_sitter.ml
    │   │   ├── Parse_r_tree_sitter.mli
    │   │   └── dune
    ├── regexp
    │   ├── .gitignore
    │   ├── AST.ml
    │   ├── AST.mli
    │   ├── Char_class.ml
    │   ├── Conf.ml
    │   ├── Conf.mli
    │   ├── Dialect.ml
    │   ├── Dialect.mli
    │   ├── Dump.ml
    │   ├── Dump.mli
    │   ├── Lexer.mll
    │   ├── Parse.ml
    │   ├── Parse.mli
    │   ├── Parser.mly
    │   ├── README.md
    │   ├── Unit_parsing.ml
    │   └── dune
    ├── ruby
    │   ├── ast
    │   │   ├── ast_ruby.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── dune
    │   │   ├── ruby_to_generic.ml
    │   │   └── ruby_to_generic.mli
    │   ├── orig_spec
    │   │   └── orig.mly
    │   └── tree-sitter
    │   │   ├── Parse_ruby_tree_sitter.ml
    │   │   ├── Parse_ruby_tree_sitter.mli
    │   │   └── dune
    ├── rust
    │   └── generic
    │   │   ├── Parse_rust_tree_sitter.ml
    │   │   ├── Parse_rust_tree_sitter.mli
    │   │   └── dune
    ├── scala
    │   ├── ast
    │   │   ├── AST_scala.ml
    │   │   ├── Log_parser_scala.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── dune
    │   │   ├── scala_to_generic.ml
    │   │   └── scala_to_generic.mli
    │   ├── orig_spec
    │   │   └── scala.ebnf
    │   └── recursive_descent
    │   │   ├── Lexer_scala.mll
    │   │   ├── Parse_scala.ml
    │   │   ├── Parse_scala.mli
    │   │   ├── Parser_scala.mly
    │   │   ├── Parser_scala_recursive_descent.ml
    │   │   ├── Parser_scala_recursive_descent.mli
    │   │   ├── Token_helpers_scala.ml
    │   │   ├── Token_scala.ml
    │   │   ├── Unit_parsing_scala.ml
    │   │   ├── Unit_parsing_scala.mli
    │   │   └── dune
    ├── solidity
    │   └── generic
    │   │   ├── Parse_solidity_tree_sitter.ml
    │   │   ├── Parse_solidity_tree_sitter.mli
    │   │   └── dune
    ├── swift
    │   └── generic
    │   │   ├── Parse_swift_tree_sitter.ml
    │   │   ├── Parse_swift_tree_sitter.mli
    │   │   └── dune
    ├── terraform
    │   ├── ast
    │   │   ├── AST_terraform.ml
    │   │   └── dune
    │   ├── generic
    │   │   ├── Terraform_to_generic.ml
    │   │   ├── Terraform_to_generic.mli
    │   │   └── dune
    │   └── tree-sitter
    │   │   ├── Parse_terraform_tree_sitter.ml
    │   │   ├── Parse_terraform_tree_sitter.mli
    │   │   └── dune
    ├── typescript
    │   └── tree-sitter
    │   │   ├── .ocamlformat-ignore
    │   │   ├── Boilerplate_tree_sitter_typescript.ml
    │   │   ├── CST_tree_sitter_typescript.ml
    │   │   ├── Parse_typescript_tree_sitter.ml
    │   │   ├── Parse_typescript_tree_sitter.mli
    │   │   └── dune
    └── yaml
    │   ├── ast
    │       ├── AST_yaml.ml
    │       └── dune
    │   ├── generic
    │       ├── dune
    │       ├── yaml_to_generic.ml
    │       └── yaml_to_generic.mli
    │   └── parser
    │       ├── Parse_yaml.ml
    │       ├── Parse_yaml.mli
    │       └── dune
├── libs
    ├── collections
    │   ├── Assoc.ml
    │   ├── Assoc.mli
    │   ├── Hashtbl_.ml
    │   ├── Hashtbl_.mli
    │   ├── List_.ml
    │   ├── List_.mli
    │   ├── Maps.ml
    │   ├── ROHashtbl.ml
    │   ├── ROHashtbl.mli
    │   ├── Seq_.ml
    │   ├── Seq_.mli
    │   ├── Set_.ml
    │   ├── Set_.mli
    │   ├── Sets.ml
    │   ├── Stack_.ml
    │   ├── Stack_.mli
    │   ├── dune
    │   └── tests
    │   │   ├── Collections_tests.ml
    │   │   ├── Unit_Hashtbl_.ml
    │   │   ├── Unit_Hashtbl_.mli
    │   │   ├── Unit_List_.ml
    │   │   ├── Unit_List_.mli
    │   │   ├── Unit_Seq_.ml
    │   │   ├── Unit_Seq_.mli
    │   │   └── dune
    ├── commons
    │   ├── ATD_string_wrap.ml
    │   ├── Arg_.ml
    │   ├── Arg_.mli
    │   ├── Buffer_.ml
    │   ├── Buffer_.mli
    │   ├── Cache_disk.ml
    │   ├── Cache_disk.mli
    │   ├── CapConsole.ml
    │   ├── CapConsole.mli
    │   ├── CapExec.ml
    │   ├── CapExec.mli
    │   ├── CapFS.ml
    │   ├── CapFS.mli
    │   ├── CapProcess.ml
    │   ├── CapProcess.mli
    │   ├── CapTmp.ml
    │   ├── CapTmp.mli
    │   ├── Chan.ml
    │   ├── Chan.mli
    │   ├── Cmd.ml
    │   ├── Cmd.mli
    │   ├── Cmdliner_.ml
    │   ├── Cmdliner_.mli
    │   ├── Common.ml
    │   ├── Common.mli
    │   ├── Console.ml
    │   ├── Console.mli
    │   ├── Datetime_.ml
    │   ├── Datetime_.mli
    │   ├── Dumper.ml
    │   ├── Dumper.mli
    │   ├── Either_.ml
    │   ├── Either_.mli
    │   ├── Eq.ml
    │   ├── Eq.mli
    │   ├── Exception.ml
    │   ├── Exception.mli
    │   ├── File_type.ml
    │   ├── File_type.mli
    │   ├── Filename_.ml
    │   ├── Filename_.mli
    │   ├── Fmt_.ml
    │   ├── Fmt_.mli
    │   ├── Fpath_.ml
    │   ├── Fpath_.mli
    │   ├── Gensym.ml
    │   ├── Gensym.mli
    │   ├── Glom.ml
    │   ├── Glom.mli
    │   ├── Hook.ml
    │   ├── Hook.mli
    │   ├── Immutable_buffer.ml
    │   ├── Immutable_buffer.mli
    │   ├── Int64_.ml
    │   ├── Int64_.mli
    │   ├── JSON.ml
    │   ├── JSON.mli
    │   ├── Log_commons.ml
    │   ├── Logs_.ml
    │   ├── Logs_.mli
    │   ├── Marshaled.ml
    │   ├── Marshaled.mli
    │   ├── OCaml.ml
    │   ├── OCaml.mli
    │   ├── Ord.ml
    │   ├── Ord.mli
    │   ├── Pcre2_.ml
    │   ├── Pcre2_.mli
    │   ├── Pcre_.ml
    │   ├── Pcre_.mli
    │   ├── Platform.ml
    │   ├── Platform.mli
    │   ├── Random_.ml
    │   ├── Random_.mli
    │   ├── Result_.ml
    │   ├── Result_.mli
    │   ├── Semver_.ml
    │   ├── Semver_.mli
    │   ├── String_.ml
    │   ├── String_.mli
    │   ├── Sys_.ml
    │   ├── Sys_.mli
    │   ├── Testutil.ml
    │   ├── Testutil.mli
    │   ├── Testutil_files.ml
    │   ├── Testutil_files.mli
    │   ├── Testutil_logs.ml
    │   ├── Testutil_logs.mli
    │   ├── Testutil_mock.ml
    │   ├── Testutil_mock.mli
    │   ├── Textedit.ml
    │   ├── Textedit.mli
    │   ├── UChan.ml
    │   ├── UChan.mli
    │   ├── UCmd.ml
    │   ├── UCmd.mli
    │   ├── UCommon.ml
    │   ├── UCommon.mli
    │   ├── UConsole.ml
    │   ├── UConsole.mli
    │   ├── UFile.ml
    │   ├── UFile.mli
    │   ├── UMarshal_.ml
    │   ├── UMarshal_.mli
    │   ├── UTmp.ml
    │   ├── UTmp.mli
    │   ├── Uri_.ml
    │   ├── Uri_.mli
    │   ├── authors.txt
    │   ├── copyright.txt
    │   ├── credits.txt
    │   ├── dune
    │   ├── license.txt
    │   └── tests
    │   │   ├── Commons_tests.ml
    │   │   ├── Commons_tests.mli
    │   │   ├── Unit_CapExec.ml
    │   │   ├── Unit_CapExec.mli
    │   │   ├── Unit_File.ml
    │   │   ├── Unit_File.mli
    │   │   ├── Unit_Hook.ml
    │   │   ├── Unit_Pcre2_.ml
    │   │   ├── Unit_Pcre2_.mli
    │   │   ├── Unit_Pcre_.ml
    │   │   ├── Unit_Pcre_.mli
    │   │   ├── Unit_Random_.ml
    │   │   ├── Unit_Random_.mli
    │   │   ├── Unit_Result_.ml
    │   │   ├── Unit_Result_.mli
    │   │   ├── Unit_String_.ml
    │   │   ├── Unit_String_.mli
    │   │   ├── Unit_commons.ml
    │   │   ├── Unit_immutable_buffer.ml
    │   │   ├── Unit_regexp_engine.ml
    │   │   ├── Unit_regexp_engine.mli
    │   │   └── dune
    ├── commons2
    │   ├── common2.ml
    │   ├── common2.mli
    │   └── dune
    ├── git_wrapper
    │   ├── Git_wrapper.ml
    │   ├── Git_wrapper.mli
    │   ├── Log_git_wrapper.ml
    │   ├── Testutil_git.ml
    │   ├── Testutil_git.mli
    │   ├── Unit_git_wrapper.ml
    │   ├── Unit_git_wrapper.mli
    │   └── dune
    ├── gitignore
    │   ├── Gitignore.ml
    │   ├── Gitignore_cache.ml
    │   ├── Gitignore_cache.mli
    │   ├── Gitignore_filter.ml
    │   ├── Gitignore_filter.mli
    │   ├── Parse_gitignore.ml
    │   ├── Parse_gitignore.mli
    │   ├── Unit_gitignore.ml
    │   ├── Unit_gitignore.mli
    │   └── dune
    ├── glob
    │   ├── Lexer.mli
    │   ├── Lexer.mll
    │   ├── Log_glob.ml
    │   ├── Match.ml
    │   ├── Match.mli
    │   ├── Parse.ml
    │   ├── Parse.mli
    │   ├── Parser.mly
    │   ├── Pattern.ml
    │   ├── Unit_glob.ml
    │   ├── Unit_glob.mli
    │   └── dune
    ├── lib_parsing
    │   ├── Flag_parsing.ml
    │   ├── Loc.ml
    │   ├── Loc.mli
    │   ├── Log_lib_parsing.ml
    │   ├── Parsed_int.ml
    │   ├── Parsed_int.mli
    │   ├── Parsing_error.ml
    │   ├── Parsing_helpers.ml
    │   ├── Parsing_helpers.mli
    │   ├── Parsing_result.ml
    │   ├── Parsing_stat.ml
    │   ├── Parsing_stat.mli
    │   ├── Pos.ml
    │   ├── Pos.mli
    │   ├── Tok.ml
    │   ├── Tok.mli
    │   ├── Tok_range.ml
    │   ├── Tok_range.mli
    │   ├── Unit_tok.ml
    │   ├── ast_fuzzy.ml
    │   ├── copyright.txt
    │   ├── dune
    │   ├── lib_ast_fuzzy.ml
    │   ├── lib_ast_fuzzy.mli
    │   └── license.txt
    ├── lib_parsing_tree_sitter
    │   ├── Log_tree_sitter.ml
    │   ├── Parse_tree_sitter_helpers.ml
    │   ├── Parse_tree_sitter_helpers.mli
    │   └── dune
    ├── lwt_platform
    │   ├── Lwt_platform.mli
    │   ├── dune
    │   └── unix
    │   │   ├── Lwt_platform.ml
    │   │   └── dune
    ├── murmur3
    │   ├── Murmur3.ml
    │   ├── Murmur3.mli
    │   ├── Murmur3_stubs.c
    │   ├── MurmurHash3.c
    │   ├── MurmurHash3.h
    │   └── dune
    ├── networking
    │   ├── dune
    │   ├── http_helpers
    │   │   ├── dune
    │   │   ├── http_helpers.ml
    │   │   └── http_helpers.mli
    │   ├── http_mock_client
    │   │   ├── Http_mock_client.ml
    │   │   ├── Http_mock_client.mli
    │   │   └── dune
    │   └── proxy
    │   │   ├── dune
    │   │   ├── proxy.ml
    │   │   └── proxy.mli
    ├── ograph
    │   ├── dune
    │   ├── ograph_call_dot_gv.ml
    │   ├── ograph_call_dot_gv.mli
    │   ├── ograph_extended.ml
    │   └── ograph_extended.mli
    ├── ojsonnet
    │   ├── Check_jsonnet.ml
    │   ├── Check_jsonnet.mli
    │   ├── Conf_ojsonnet.ml
    │   ├── Core_jsonnet.ml
    │   ├── Desugar_jsonnet.ml
    │   ├── Desugar_jsonnet.mli
    │   ├── Eval_jsonnet.ml
    │   ├── Eval_jsonnet.mli
    │   ├── Eval_jsonnet_common.ml
    │   ├── Eval_jsonnet_envir.ml
    │   ├── Eval_jsonnet_envir.mli
    │   ├── Eval_jsonnet_subst.ml
    │   ├── Eval_jsonnet_subst.mli
    │   ├── Interpret_jsonnet.ml
    │   ├── Interpret_jsonnet.mli
    │   ├── Manifest_jsonnet.ml
    │   ├── Manifest_jsonnet.mli
    │   ├── Parse_jsonnet.ml
    │   ├── Parse_jsonnet.mli
    │   ├── Std_jsonnet.ml
    │   ├── Std_jsonnet.mli
    │   ├── Test_ojsonnet.ml
    │   ├── Test_ojsonnet.mli
    │   ├── Unit_jsonnet.ml
    │   ├── Unit_jsonnet.mli
    │   ├── Value_jsonnet.ml
    │   └── dune
    ├── parallelism
    │   ├── Atomic_.ml
    │   ├── Atomic_.mli
    │   ├── Domains.ml
    │   ├── Domains.mli
    │   ├── Eio_locked.ml
    │   ├── Eio_locked.mli
    │   ├── Log_parallelism.ml
    │   ├── Parallelism_config.ml
    │   ├── Parmap_.ml
    │   ├── Parmap_.mli
    │   ├── SharedCounterTable.ml
    │   ├── SharedCounterTable.mli
    │   ├── SharedMemo.ml
    │   ├── SharedMemo.mli
    │   ├── dune
    │   └── tests
    │   │   ├── Parallelism_tests.ml
    │   │   ├── Parallelism_tests.mli
    │   │   ├── Unit_Domains.ml
    │   │   ├── Unit_SharedMemo.ml
    │   │   └── dune
    ├── paths
    │   ├── Fppath.ml
    │   ├── Fppath.mli
    │   ├── List_files.ml
    │   ├── List_files.mli
    │   ├── Log_paths.ml
    │   ├── Ppath.ml
    │   ├── Ppath.mli
    │   ├── Project.ml
    │   ├── Project.mli
    │   ├── Rfpath.ml
    │   ├── Rfpath.mli
    │   ├── Rpath.ml
    │   ├── Rpath.mli
    │   ├── Testutil_paths.ml
    │   ├── Testutil_paths.mli
    │   ├── Unit_Ppath.ml
    │   ├── Unit_Ppath.mli
    │   ├── Unit_Rpath.ml
    │   ├── Unit_Rpath.mli
    │   ├── Unit_list_files.ml
    │   ├── Unit_list_files.mli
    │   └── dune
    ├── process_limits
    │   ├── Cgroup_limits.ml
    │   ├── Cgroup_limits.mli
    │   ├── Log_process_limits.ml
    │   ├── Memory_limit.ml
    │   ├── Memory_limit.mli
    │   ├── Process_limit_metrics.ml
    │   ├── Process_limit_metrics.mli
    │   ├── Time_limit.ml
    │   ├── Time_limit.mli
    │   ├── Unit_cgroup_limits.ml
    │   ├── Unit_cgroup_limits.mli
    │   ├── Unit_memory_limit.ml
    │   ├── Unit_memory_limit.mli
    │   └── dune
    ├── profiling
    │   ├── Profiling.ml
    │   ├── Profiling.mli
    │   ├── dune
    │   └── ppx
    │   │   ├── dune
    │   │   ├── ppx_profiling.ml
    │   │   └── tests
    │   │       ├── basic.ml
    │   │       ├── label.ml
    │   │       └── optional_param.ml
    ├── python-str-repr
    │   ├── LICENSE
    │   ├── README.md
    │   ├── dune-project
    │   ├── lib
    │   │   ├── dune
    │   │   ├── python_str_repr.ml
    │   │   └── python_str_repr.mli
    │   ├── python-str-repr.opam
    │   └── test
    │   │   ├── dune
    │   │   ├── test_py_python_str_repr.ml
    │   │   └── test_python_str_repr.ml
    └── telemetry
    │   ├── Logging.mli
    │   ├── Ometrics.mli
    │   ├── Telemetry.mli
    │   ├── Tracing.mli
    │   ├── dune
    │   ├── js
    │       ├── Logging.ml
    │       ├── Ometrics.ml
    │       ├── Telemetry.ml
    │       ├── Tracing.ml
    │       └── dune
    │   ├── ppx
    │       ├── dune
    │       ├── ppx_tests
    │       │   ├── basic.ml
    │       │   ├── label.ml
    │       │   ├── multiple_funs.ml
    │       │   └── nested_let.ml
    │       └── ppx_tracing.ml
    │   ├── ppx_tests
    │       └── trace_debug.ml
    │   └── unix
    │       ├── Logging.ml
    │       ├── Ometrics.ml
    │       ├── Otel_util.ml
    │       ├── Telemetry.ml
    │       ├── Tracing.ml
    │       └── dune
├── metrics.md
├── mypy-tests.ini
├── mypy.ini
├── perf
    ├── Makefile
    ├── README.md
    ├── bench
    │   ├── dogfood
    │   │   ├── prep
    │   │   └── semgrep_r_all.yml.gz
    │   └── dummy
    │   │   ├── input
    │   │       └── dummy
    │   │       │   ├── rules
    │   │       │       └── exec.yaml
    │   │       │   └── targets
    │   │       │       ├── hello.js
    │   │       │       └── malformed.js
    │   │   ├── prep
    │   │   ├── rules
    │   │       └── exec.yaml
    │   │   └── targets
    │   │       ├── hello.js
    │   │       └── malformed.js
    ├── benchmark-against-version.py
    ├── compare-bench-findings
    ├── compare-perf
    ├── config.py
    ├── configs
    │   ├── ci_large_repos.yaml
    │   ├── ci_medium_repos.yaml
    │   └── ci_small_repos.yaml
    ├── constants.py
    ├── corpus.py
    ├── r2c-rules
    │   ├── README.md
    │   ├── django.yml
    │   ├── docker.yml
    │   ├── eslint-plugin-security.yml
    │   ├── flask.yml
    │   ├── golang.yml
    │   ├── java.yml
    │   ├── javascript.yml
    │   ├── python.yml
    │   ├── r2c-ci.yml
    │   ├── r2c-security-audit.yml
    │   ├── ruby.yml
    │   └── slow-prefilter.yml
    ├── repository_time_per_rule.py
    ├── rules
    │   ├── all_nodejsscan.yml
    │   ├── no_regexp.yml
    │   ├── semgrep_fast.yml
    │   ├── semgrep_slow.yml
    │   └── zulip
    │   │   └── semgrep.yml
    ├── run-benchmarks
    ├── snapshots
    │   └── ci_small_repos_baseline.json
    └── variant.py
├── pysemgrep.nix
├── release_changes.md
├── scripts
    ├── add-pysemgrep-to-path.sh
    ├── build-static-libcurl.sh
    ├── build-wheels.sh
    ├── cheatsheet.json
    ├── check-bash-version
    ├── compare-target-selection
    ├── compare.py
    ├── generate-cheatsheet
    ├── generate_cheatsheet.py
    ├── jsonnet_to_yaml.sh
    ├── lint-ocaml
    ├── make-symlinks
    ├── merge-rules.py
    ├── processing-output
    │   ├── diff-files.py
    │   ├── duplicate-diff.py
    │   ├── read-action-timing.py
    │   ├── read-core-timing.py
    │   └── read-timing.py
    ├── release
    │   ├── Pipfile
    │   ├── Pipfile.lock
    │   ├── bump
    │   ├── git
    │   │   ├── __init__.py
    │   │   └── constants.py
    │   ├── linuxbrew.Dockerfile
    │   └── towncrier.toml
    ├── report_test_metrics.sh
    ├── run-benchmarks.sh
    ├── run-core-test
    ├── run-coverage.py
    ├── run-ocamldebug.sh
    ├── test-compare-perf
    ├── validate-docker-build.sh
    ├── validate-docker-release.sh
    └── validate-wheel.sh
├── semgrep.jsonnet
├── semgrep.nix
├── semgrep.opam
├── semgrep.opam.template
├── semgrep.svg
├── semgrep.yml
├── setup.py
├── src
    ├── aliengrep
    │   ├── Conf.ml
    │   ├── Conf.mli
    │   ├── Log_aliengrep.ml
    │   ├── Match.ml
    │   ├── Match.mli
    │   ├── Pat_AST.ml
    │   ├── Pat_AST.mli
    │   ├── Pat_compile.ml
    │   ├── Pat_compile.mli
    │   ├── Pat_lexer.ml
    │   ├── Pat_lexer.mli
    │   ├── Pat_parser.ml
    │   ├── Pat_parser.mli
    │   ├── Pcre_util.ml
    │   ├── Pcre_util.mli
    │   ├── README.md
    │   ├── Unit_Match.ml
    │   ├── Unit_Match.mli
    │   ├── Unit_Pat_parser.ml
    │   ├── Unit_Pat_parser.mli
    │   ├── Unit_tests.ml
    │   └── dune
    ├── analyzing
    │   ├── AST_to_IL.ml
    │   ├── AST_to_IL.mli
    │   ├── CFG_build.ml
    │   ├── CFG_build.mli
    │   ├── Constant_propagation.ml
    │   ├── Constant_propagation.mli
    │   ├── Dataflow_core.ml
    │   ├── Dataflow_core.mli
    │   ├── Dataflow_svalue.ml
    │   ├── Dataflow_svalue.mli
    │   ├── Dataflow_var_env.ml
    │   ├── Dataflow_var_env.mli
    │   ├── Dataflow_when.ml
    │   ├── Dataflow_when.mli
    │   ├── Eval_generic_partial.ml
    │   ├── Eval_generic_partial.mli
    │   ├── Eval_il_partial.ml
    │   ├── Eval_il_partial.mli
    │   ├── Fold_IL_params.ml
    │   ├── Fold_IL_params.mli
    │   ├── Implicit_return.ml
    │   ├── Implicit_return.mli
    │   ├── Iter_with_context.ml
    │   ├── Log_analyzing.ml
    │   ├── Visit_class_defs.ml
    │   ├── Visit_function_defs.ml
    │   ├── Visit_pattern_ids.ml
    │   ├── Visit_wildcard_imports.ml
    │   ├── dune
    │   └── tests
    │   │   ├── Test_analyze_generic.ml
    │   │   ├── Test_analyze_generic.mli
    │   │   ├── Unit_dataflow.ml
    │   │   ├── Unit_dataflow.mli
    │   │   └── dune
    ├── ast_generic
    │   ├── AST_generic.ml
    │   ├── AST_generic_helpers.ml
    │   ├── AST_generic_helpers.mli
    │   ├── IdFlags.ml
    │   ├── IdFlags.mli
    │   ├── Log_ast_generic.ml
    │   ├── Meta_AST.ml
    │   ├── Meta_AST.mli
    │   ├── Raw_tree.ml
    │   ├── Raw_tree.mli
    │   └── dune
    ├── configuring
    │   ├── Flag_semgrep.ml
    │   ├── Limits_semgrep.ml
    │   ├── Num_jobs.ml
    │   ├── Num_jobs.mli
    │   ├── Resources.ml
    │   ├── Resources.mli
    │   ├── Rule_options.atd
    │   ├── Rule_options.ml
    │   └── dune
    ├── core
    │   ├── Core_error.ml
    │   ├── Core_error.mli
    │   ├── Core_match.ml
    │   ├── Core_match.mli
    │   ├── Core_profiling.ml
    │   ├── Core_profiling.mli
    │   ├── Core_quick_profiling.ml
    │   ├── Core_quick_profiling.mli
    │   ├── Core_result.ml
    │   ├── Core_result.mli
    │   ├── Engine_kind.ml
    │   ├── Log_semgrep.ml
    │   ├── Matching_explanation.ml
    │   ├── Metavariable.ml
    │   ├── Metavariable.mli
    │   ├── Range.ml
    │   ├── Range.mli
    │   ├── SCA_match.ml
    │   ├── Semgrep_output_utils.ml
    │   ├── Semgrep_output_utils.mli
    │   ├── Summary_stats.ml
    │   ├── Summary_stats.mli
    │   ├── Taint_trace.ml
    │   ├── Test_tags.ml
    │   ├── Test_tags.mli
    │   ├── Trace_data.ml
    │   ├── Trace_data.mli
    │   ├── Type.ml
    │   ├── Type.mli
    │   ├── Version.ml
    │   ├── Version_info.ml
    │   ├── Version_info.mli
    │   └── dune
    ├── core_cli
    │   ├── Core_CLI.ml
    │   ├── Core_CLI.mli
    │   ├── Core_actions.ml
    │   ├── Core_exit_code.ml
    │   ├── Core_exit_code.mli
    │   ├── Test_core_CLI.ml
    │   ├── Test_core_CLI.mli
    │   └── dune
    ├── core_scan
    │   ├── Core_metrics.ml
    │   ├── Core_metrics.mli
    │   ├── Core_scan.ml
    │   ├── Core_scan.mli
    │   ├── Core_scan_config.ml
    │   ├── Core_targeting.ml
    │   ├── Core_targeting.mli
    │   ├── Lang_job.ml
    │   ├── Parmap_targets.ml
    │   ├── Parmap_targets.mli
    │   └── dune
    ├── engine
    │   ├── Entropy.ml
    │   ├── Entropy.mli
    │   ├── Entropy_data.ml
    │   ├── Eval_generic.ml
    │   ├── Eval_generic.mli
    │   ├── Formula_cache.ml
    │   ├── Formula_cache.mli
    │   ├── Log_engine.ml
    │   ├── Match_env.ml
    │   ├── Match_rules.ml
    │   ├── Match_rules.mli
    │   ├── Match_search_mode.ml
    │   ├── Match_search_mode.mli
    │   ├── Match_taint_spec.ml
    │   ├── Match_taint_spec.mli
    │   ├── Match_tainting_mode.ml
    │   ├── Match_tainting_mode.mli
    │   ├── Metavariable_analysis.ml
    │   ├── Metavariable_analysis.mli
    │   ├── Metavariable_name.ml
    │   ├── Metavariable_name.mli
    │   ├── Metavariable_pattern.ml
    │   ├── Metavariable_pattern.mli
    │   ├── Metavariable_regex.ml
    │   ├── Metavariable_regex.mli
    │   ├── Range_with_metavars.ml
    │   ├── Range_with_metavars.mli
    │   ├── ReDoS.ml
    │   ├── ReDoS.mli
    │   ├── String_literal.ml
    │   ├── String_literal.mli
    │   ├── Xpattern_match_aliengrep.ml
    │   ├── Xpattern_match_aliengrep.mli
    │   ├── Xpattern_match_regexp.ml
    │   ├── Xpattern_match_regexp.mli
    │   ├── Xpattern_match_spacegrep.ml
    │   ├── Xpattern_match_spacegrep.mli
    │   ├── Xpattern_matcher.ml
    │   ├── Xpattern_matcher.mli
    │   ├── dune
    │   └── tests
    │   │   ├── Test_compare_matches.ml
    │   │   ├── Test_compare_matches.mli
    │   │   ├── Test_dataflow_tainting.ml
    │   │   ├── Test_dataflow_tainting.mli
    │   │   ├── Test_engine.ml
    │   │   ├── Test_engine.mli
    │   │   ├── Test_utils.ml
    │   │   ├── Unit_ReDoS.ml
    │   │   ├── Unit_engine.ml
    │   │   ├── Unit_engine.mli
    │   │   ├── Unit_entropy.ml
    │   │   └── dune
    ├── fixing
    │   ├── Autofix.ml
    │   ├── Autofix.mli
    │   ├── Autofix_metavar_replacement.ml
    │   ├── Autofix_metavar_replacement.mli
    │   ├── Autofix_printer.ml
    │   ├── Autofix_printer.mli
    │   ├── Fixed_lines.ml
    │   ├── Fixed_lines.mli
    │   ├── Hybrid_print.ml
    │   ├── Hybrid_print.mli
    │   ├── Log_fixing.ml
    │   ├── dune
    │   └── tests
    │   │   ├── README.txt
    │   │   ├── Unit_autofix.ml
    │   │   ├── Unit_autofix_printer.ml
    │   │   ├── Unit_autofix_printer.mli
    │   │   └── dune
    ├── il
    │   ├── CFG.ml
    │   ├── Display_IL.ml
    │   ├── Display_IL.mli
    │   ├── IL.ml
    │   ├── IL_helpers.ml
    │   ├── IL_helpers.mli
    │   └── dune
    ├── lsp_legacy
    │   ├── Legacy_language_server.ml
    │   ├── Legacy_ls.ml
    │   ├── Legacy_ls.mli
    │   ├── Legacy_test_ls_e2e.ml
    │   ├── Legacy_test_ls_e2e.mli
    │   ├── Legacy_unit_ls.ml
    │   ├── Legacy_unit_ls.mli
    │   ├── custom_commands
    │   │   ├── Legacy_autofix_cmd.ml
    │   │   ├── Legacy_autofix_cmd.mli
    │   │   ├── Legacy_ignore_cmd.ml
    │   │   ├── Legacy_ignore_cmd.mli
    │   │   └── dune
    │   ├── custom_requests
    │   │   ├── Legacy_login_start.ml
    │   │   ├── Legacy_login_start.mli
    │   │   ├── Legacy_login_status.ml
    │   │   ├── Legacy_login_status.mli
    │   │   ├── Legacy_loginfinish.ml
    │   │   ├── Legacy_loginfinish.mli
    │   │   ├── Legacy_search.ml
    │   │   ├── Legacy_search.mli
    │   │   ├── Legacy_showast.ml
    │   │   ├── Legacy_showast.mli
    │   │   └── dune
    │   ├── dune
    │   ├── notifications
    │   │   ├── Legacy_notification_handler.ml
    │   │   ├── Legacy_notification_handler.mli
    │   │   └── dune
    │   ├── requests
    │   │   ├── Legacy_code_actions.ml
    │   │   ├── Legacy_code_actions.mli
    │   │   ├── Legacy_execute_command.ml
    │   │   ├── Legacy_execute_command.mli
    │   │   ├── Legacy_hover_request.ml
    │   │   ├── Legacy_hover_request.mli
    │   │   ├── Legacy_initialize_request.ml
    │   │   ├── Legacy_initialize_request.mli
    │   │   ├── Legacy_request_handler.ml
    │   │   ├── Legacy_request_handler.mli
    │   │   └── dune
    │   ├── scan_helpers
    │   │   ├── Legacy_diagnostics.ml
    │   │   ├── Legacy_diagnostics.mli
    │   │   ├── Legacy_processed_run.ml
    │   │   ├── Legacy_processed_run.mli
    │   │   ├── Legacy_scan_helpers.ml
    │   │   ├── Legacy_scan_helpers.mli
    │   │   └── dune
    │   ├── server
    │   │   ├── Legacy_ls_metrics.ml
    │   │   ├── Legacy_ls_metrics.mli
    │   │   ├── Legacy_lsp_.ml
    │   │   ├── Legacy_lsp_.mli
    │   │   ├── Legacy_rpc_server.ml
    │   │   ├── Legacy_rpc_server.mli
    │   │   ├── Legacy_search_config.ml
    │   │   ├── Legacy_session.ml
    │   │   ├── Legacy_session.mli
    │   │   ├── Legacy_user_settings.ml
    │   │   ├── Legacy_user_settings.mli
    │   │   └── dune
    │   └── util
    │   │   ├── Legacy_convert_utils.ml
    │   │   ├── Legacy_convert_utils.mli
    │   │   └── dune
    ├── main
    │   ├── Main.ml
    │   ├── dune
    │   ├── flags.sh
    │   └── list-tree-sitter-langs.sh
    ├── matching
    │   ├── Log_matching.ml
    │   ├── Match_patterns.ml
    │   ├── Match_patterns.mli
    │   ├── Matching_generic.ml
    │   ├── Matching_generic.mli
    │   ├── Matching_visitor.ml
    │   ├── Normalize_generic.ml
    │   ├── Normalize_generic.mli
    │   ├── Pattern_vs_code.ml
    │   ├── Pattern_vs_code.mli
    │   ├── SubAST_generic.ml
    │   ├── SubAST_generic.mli
    │   ├── Trace_matching.ml
    │   ├── Trace_matching.mli
    │   ├── Unit_matcher.ml
    │   ├── Unit_matcher.mli
    │   └── dune
    ├── metachecking
    │   ├── Check_rule.ml
    │   ├── Check_rule.mli
    │   ├── Test_metachecking.ml
    │   ├── Test_metachecking.mli
    │   ├── Translate_rule.ml
    │   ├── Translate_rule.mli
    │   ├── Unit_metachecking.ml
    │   ├── Unit_metachecking.mli
    │   └── dune
    ├── naming
    │   ├── Log_naming.ml
    │   ├── Naming_AST.ml
    │   ├── Naming_AST.mli
    │   ├── Naming_utils.ml
    │   ├── Naming_utils.mli
    │   ├── Test_naming_generic.ml
    │   ├── Test_naming_generic.mli
    │   ├── Unit_naming_generic.ml
    │   ├── Unit_naming_generic.mli
    │   ├── Unit_typing_generic.ml
    │   ├── Unit_typing_generic.mli
    │   └── dune
    ├── optimizing
    │   ├── Analyze_pattern.ml
    │   ├── Analyze_pattern.mli
    │   ├── Analyze_rule.ml
    │   ├── Analyze_rule.mli
    │   ├── Analyze_spacegrep.ml
    │   ├── Analyze_spacegrep.mli
    │   ├── Log_optimizing.ml
    │   ├── Mini_rules_filter.ml
    │   ├── Mini_rules_filter.mli
    │   ├── Semgrep_prefilter.atd
    │   └── dune
    ├── osemgrep
    │   ├── README.md
    │   ├── TODO.md
    │   ├── cli
    │   │   ├── CLI.ml
    │   │   ├── CLI.mli
    │   │   ├── Help.ml
    │   │   ├── Help.mli
    │   │   └── dune
    │   ├── cli_ci
    │   │   ├── Ci_CLI.ml
    │   │   ├── Ci_CLI.mli
    │   │   ├── Ci_subcommand.ml
    │   │   ├── Ci_subcommand.mli
    │   │   ├── Eval_ci_action.ml
    │   │   ├── Eval_ci_action.mli
    │   │   ├── Git_metadata.ml
    │   │   ├── Git_metadata.mli
    │   │   ├── Github_metadata.ml
    │   │   ├── Github_metadata.mli
    │   │   ├── Test_ci_subcommand.ml
    │   │   ├── Test_ci_subcommand.mli
    │   │   ├── Test_is_blocking_helpers.ml
    │   │   ├── Unit_ci.ml
    │   │   ├── Unit_ci.mli
    │   │   └── dune
    │   ├── cli_install_ci
    │   │   ├── Install_ci_CLI.ml
    │   │   ├── Install_ci_CLI.mli
    │   │   ├── Install_ci_subcommand.ml
    │   │   ├── Install_ci_subcommand.mli
    │   │   └── dune
    │   ├── cli_install_semgrep_pro
    │   │   ├── Install_semgrep_pro_CLI.ml
    │   │   ├── Install_semgrep_pro_CLI.mli
    │   │   ├── Install_semgrep_pro_subcommand.ml
    │   │   ├── Install_semgrep_pro_subcommand.mli
    │   │   └── dune
    │   ├── cli_login
    │   │   ├── Login_CLI.ml
    │   │   ├── Login_CLI.mli
    │   │   ├── Login_subcommand.ml
    │   │   ├── Login_subcommand.mli
    │   │   ├── Logout_CLI.ml
    │   │   ├── Logout_CLI.mli
    │   │   ├── Logout_subcommand.ml
    │   │   ├── Logout_subcommand.mli
    │   │   ├── Test_login_subcommand.ml
    │   │   ├── Test_login_subcommand.mli
    │   │   └── dune
    │   ├── cli_lsp
    │   │   ├── Lsp_CLI.ml
    │   │   ├── Lsp_CLI.mli
    │   │   ├── Lsp_subcommand.ml
    │   │   ├── Lsp_subcommand.mli
    │   │   └── dune
    │   ├── cli_scan
    │   │   ├── Diff_scan.ml
    │   │   ├── Diff_scan.mli
    │   │   ├── Ls_subcommand.ml
    │   │   ├── Ls_subcommand.mli
    │   │   ├── Scan_CLI.ml
    │   │   ├── Scan_CLI.mli
    │   │   ├── Scan_subcommand.ml
    │   │   ├── Scan_subcommand.mli
    │   │   ├── Test_scan_subcommand.ml
    │   │   ├── Test_scan_subcommand.mli
    │   │   └── dune
    │   ├── cli_show
    │   │   ├── Show_CLI.ml
    │   │   ├── Show_CLI.mli
    │   │   ├── Show_subcommand.ml
    │   │   ├── Show_subcommand.mli
    │   │   ├── Test_show_subcommand.ml
    │   │   ├── Test_show_subcommand.mli
    │   │   ├── Whoami.ml
    │   │   ├── Whoami.mli
    │   │   └── dune
    │   ├── cli_test
    │   │   ├── Diagnosis.ml
    │   │   ├── Test_CLI.ml
    │   │   ├── Test_CLI.mli
    │   │   ├── Test_annotation.ml
    │   │   ├── Test_annotation.mli
    │   │   ├── Test_subcommand.ml
    │   │   ├── Test_subcommand.mli
    │   │   ├── Unit_test_subcommand.ml
    │   │   ├── Unit_test_subcommand.mli
    │   │   └── dune
    │   ├── cli_validate
    │   │   ├── Validate_CLI.ml
    │   │   ├── Validate_CLI.mli
    │   │   ├── Validate_subcommand.ml
    │   │   ├── Validate_subcommand.mli
    │   │   └── dune
    │   ├── configuring
    │   │   ├── Semgrep_envvars.ml
    │   │   ├── Semgrep_envvars.mli
    │   │   ├── Semgrep_settings.ml
    │   │   ├── Semgrep_settings.mli
    │   │   └── dune
    │   ├── core
    │   │   ├── Auth.ml
    │   │   ├── Auth.mli
    │   │   ├── CLI_common.ml
    │   │   ├── CLI_common.mli
    │   │   ├── Core_runner_result.ml
    │   │   ├── Engine_type.ml
    │   │   ├── Error.ml
    │   │   ├── Error.mli
    │   │   ├── Exit_code.ml
    │   │   ├── Exit_code.mli
    │   │   ├── Maturity.ml
    │   │   ├── Maturity.mli
    │   │   ├── Metrics_.ml
    │   │   ├── Metrics_.mli
    │   │   ├── Migration.ml
    │   │   ├── Migration.mli
    │   │   ├── Profiler.ml
    │   │   ├── Profiler.mli
    │   │   ├── Project_metadata.ml
    │   │   ├── Project_metadata.mli
    │   │   ├── Pysemgrep.ml
    │   │   ├── Pysemgrep.mli
    │   │   ├── Rule_filtering.ml
    │   │   ├── Rule_filtering.mli
    │   │   ├── Rule_tests.ml
    │   │   ├── Rule_tests.mli
    │   │   ├── Rules_config.ml
    │   │   ├── Rules_config.mli
    │   │   ├── Rules_source.ml
    │   │   ├── dune
    │   │   └── semgrep_metrics.atd
    │   ├── core_runner
    │   │   ├── Core_runner.ml
    │   │   ├── Core_runner.mli
    │   │   └── dune
    │   ├── experiments
    │   │   └── distributed_scans
    │   │   │   ├── Distributed_scan_stub.ml
    │   │   │   ├── Distributed_scan_stub.mli
    │   │   │   └── dune
    │   ├── jsonnet
    │   │   ├── AST_generic_to_jsonnet.ml
    │   │   ├── AST_generic_to_jsonnet.mli
    │   │   └── dune
    │   ├── networking
    │   │   ├── Fetch_file.ml
    │   │   ├── Github_API.ml
    │   │   ├── Github_API.mli
    │   │   ├── Rule_fetching.ml
    │   │   ├── Rule_fetching.mli
    │   │   ├── Semgrep_App.ml
    │   │   ├── Semgrep_App.mli
    │   │   ├── Semgrep_Metrics.ml
    │   │   ├── Semgrep_Metrics.mli
    │   │   ├── Semgrep_Registry.ml
    │   │   ├── Semgrep_Registry.mli
    │   │   ├── Semgrep_login.ml
    │   │   ├── Semgrep_login.mli
    │   │   ├── Testutil_login.ml
    │   │   ├── Testutil_login.mli
    │   │   ├── Unit_Fetching.ml
    │   │   ├── Unit_Fetching.mli
    │   │   ├── Unit_Login.ml
    │   │   ├── Unit_Login.mli
    │   │   ├── Unit_Networking.ml
    │   │   ├── Unit_Networking.mli
    │   │   ├── dune
    │   │   └── tests
    │   │   │   └── dune
    │   ├── reporting
    │   │   ├── Cli_json_output.ml
    │   │   ├── Cli_json_output.mli
    │   │   ├── Console_Spinner.ml
    │   │   ├── Console_Spinner.mli
    │   │   ├── Exposure.ml
    │   │   ├── Exposure.mli
    │   │   ├── Gated_data.ml
    │   │   ├── Gitlab_output.ml
    │   │   ├── Gitlab_output.mli
    │   │   ├── Junit_xml_output.ml
    │   │   ├── Junit_xml_output.mli
    │   │   ├── Output.ml
    │   │   ├── Output.mli
    │   │   ├── Output_format.ml
    │   │   ├── Sarif_output.ml
    │   │   ├── Sarif_output.mli
    │   │   ├── Semgrep_hashing_functions.ml
    │   │   ├── Semgrep_hashing_functions.mli
    │   │   ├── Skipped_groups.ml
    │   │   ├── Skipped_groups.mli
    │   │   ├── Text_output.ml
    │   │   ├── Text_output.mli
    │   │   ├── Text_reports.ml
    │   │   ├── Text_reports.mli
    │   │   ├── Unit_reporting.ml
    │   │   ├── Unit_reporting.mli
    │   │   └── dune
    │   └── tests
    │   │   ├── Test_osemgrep.ml
    │   │   ├── Test_osemgrep.mli
    │   │   ├── Test_target_selection.ml
    │   │   ├── Test_target_selection.mli
    │   │   └── dune
    ├── parsing
    │   ├── Check_pattern.ml
    │   ├── Check_pattern.mli
    │   ├── Log_parsing.ml
    │   ├── Manifest_jsonnet_to_AST_generic.ml
    │   ├── Manifest_jsonnet_to_AST_generic.mli
    │   ├── Parse_SCA_version.ml
    │   ├── Parse_SCA_version.mli
    │   ├── Parse_contribution.ml
    │   ├── Parse_contribution.mli
    │   ├── Parse_metavariable_type.ml
    │   ├── Parse_metavariable_type.mli
    │   ├── Parse_pattern.ml
    │   ├── Parse_pattern.mli
    │   ├── Parse_rule.ml
    │   ├── Parse_rule.mli
    │   ├── Parse_rule_formula.ml
    │   ├── Parse_rule_formula.mli
    │   ├── Parse_rule_helpers.ml
    │   ├── Parse_rule_helpers.mli
    │   ├── Parse_rules_with_atd.ml
    │   ├── Parse_rules_with_atd.mli
    │   ├── Parse_target.ml
    │   ├── Parse_target.mli
    │   ├── Parsing_plugin.ml
    │   ├── Parsing_plugin.mli
    │   ├── Parsing_result2.ml
    │   ├── Parsing_result2.mli
    │   ├── Parsing_stats.atd
    │   ├── Pfff_or_tree_sitter.ml
    │   ├── Pfff_or_tree_sitter.mli
    │   ├── Rule_file.ml
    │   ├── Rule_file.mli
    │   ├── Unit_parsing.ml
    │   ├── Unit_parsing.mli
    │   ├── dune
    │   └── tests
    │   │   ├── AST_stat.ml
    │   │   ├── AST_stat.mli
    │   │   ├── Test_parsing.ml
    │   │   ├── Test_parsing.mli
    │   │   └── dune
    ├── printing
    │   ├── Log_printing.ml
    │   ├── Pretty_print_AST.ml
    │   ├── Pretty_print_AST.mli
    │   ├── Ugly_print_AST.ml
    │   ├── Ugly_print_AST.mli
    │   ├── dune
    │   └── tests
    │   │   ├── README.txt
    │   │   ├── Unit_ugly_print_AST.ml
    │   │   └── dune
    ├── reporting
    │   ├── Core_json_output.ml
    │   ├── Core_json_output.mli
    │   ├── Core_text_output.ml
    │   ├── Core_text_output.mli
    │   ├── Log_reporting.ml
    │   ├── Metavar_replacement.ml
    │   ├── Metavar_replacement.mli
    │   ├── Nosemgrep.ml
    │   ├── Nosemgrep.mli
    │   ├── Unit_core_json_output.ml
    │   └── dune
    ├── rpc
    │   ├── README.txt
    │   ├── RPC.ml
    │   ├── RPC.mli
    │   ├── RPC_return.ml
    │   ├── RPC_return.mli
    │   └── dune
    ├── rule
    │   ├── Analyzer.ml
    │   ├── Analyzer.mli
    │   ├── Lang.ml
    │   ├── Lang.mli
    │   ├── Language.ml
    │   ├── Language.mli
    │   ├── Mini_rule.ml
    │   ├── Mvar.ml
    │   ├── Mvar.mli
    │   ├── Pattern.ml
    │   ├── Pattern.mli
    │   ├── Rule.ml
    │   ├── Rule_ID.ml
    │   ├── Rule_ID.mli
    │   ├── Rule_error.ml
    │   ├── Rule_error.mli
    │   ├── SCA_pattern.ml
    │   ├── SCA_version.ml
    │   ├── Target_selector.ml
    │   ├── Visit_rule.ml
    │   ├── Visit_rule.mli
    │   ├── Xpattern.ml
    │   ├── dune
    │   ├── rule_schema_v2.atd
    │   ├── rule_schema_v2_adapter.ml
    │   └── semgrep_output_v1.atd
    ├── sca
    │   ├── Dependency.ml
    │   ├── Dependency_source.ml
    │   ├── Ecosystem.ml
    │   ├── Lockfile.ml
    │   ├── Lockfile.mli
    │   ├── Manifest.ml
    │   ├── Manifest.mli
    │   ├── Package.ml
    │   └── dune
    ├── spacegrep
    │   ├── .gitignore
    │   ├── Makefile
    │   ├── README.md
    │   ├── bin
    │   │   ├── spacecat
    │   │   └── spacegrep
    │   ├── dune
    │   ├── examples
    │   │   ├── exec.doc
    │   │   ├── exec.pat
    │   │   ├── go-package.doc
    │   │   ├── go-package.pat
    │   │   ├── go-package.url
    │   │   ├── hello.doc
    │   │   ├── hello.pat
    │   │   ├── js-internal-error.doc
    │   │   ├── js-internal-error.pat
    │   │   ├── js-optional-chain.doc
    │   │   ├── js-optional-chain.pat
    │   │   ├── my_first_calculator.py.doc
    │   │   ├── my_first_calculator.py.pat
    │   │   ├── python-from.doc
    │   │   ├── python-from.pat
    │   │   ├── python-tab.doc
    │   │   ├── python-tab.pat
    │   │   ├── ruby-erb.doc
    │   │   └── ruby-erb.pat
    │   ├── perf-data
    │   │   ├── django-template.pat
    │   │   └── django-template.po.gz
    │   ├── scripts
    │   │   ├── run-examples
    │   │   └── show-perf
    │   └── src
    │   │   ├── bin
    │   │       ├── Space_main.ml
    │   │       ├── Spacecat_main.ml
    │   │       ├── Spacegrep_main.ml
    │   │       └── dune
    │   │   ├── lib
    │   │       ├── Comment.ml
    │   │       ├── Comment.mli
    │   │       ├── Doc_AST.ml
    │   │       ├── Dump_match.ml
    │   │       ├── Dump_match.mli
    │   │       ├── File_type.ml
    │   │       ├── Find_files.ml
    │   │       ├── Find_files.mli
    │   │       ├── Lexer.mll
    │   │       ├── Loc.ml
    │   │       ├── Log_spacegrep.ml
    │   │       ├── Match.ml
    │   │       ├── Match.mli
    │   │       ├── Parse_doc.ml
    │   │       ├── Parse_doc.mli
    │   │       ├── Parse_pattern.ml
    │   │       ├── Parse_pattern.mli
    │   │       ├── Pattern_AST.ml
    │   │       ├── Pre_match.ml
    │   │       ├── Pre_match.mli
    │   │       ├── Print.ml
    │   │       ├── Print_match.ml
    │   │       ├── Print_match.mli
    │   │       ├── Src_file.ml
    │   │       ├── Src_file.mli
    │   │       └── dune
    │   │   └── test
    │   │       ├── .ocamlformat-ignore
    │   │       ├── Comment.ml
    │   │       ├── File_type.ml
    │   │       ├── Matcher.ml
    │   │       ├── Parser.ml
    │   │       ├── Src_file.ml
    │   │       ├── Test.ml
    │   │       └── dune
    ├── tainting
    │   ├── Dataflow_tainting.ml
    │   ├── Dataflow_tainting.mli
    │   ├── Log_tainting.ml
    │   ├── Shape_and_sig.ml
    │   ├── Taint.ml
    │   ├── Taint.mli
    │   ├── Taint_input_env.ml
    │   ├── Taint_input_env.mli
    │   ├── Taint_lambdas.ml
    │   ├── Taint_lambdas.mli
    │   ├── Taint_lval_env.ml
    │   ├── Taint_lval_env.mli
    │   ├── Taint_pro_hooks.ml
    │   ├── Taint_rule_inst.ml
    │   ├── Taint_shape.ml
    │   ├── Taint_shape.mli
    │   ├── Taint_spec_match.ml
    │   ├── Taint_spec_match.mli
    │   ├── Taint_spec_preds.ml
    │   ├── Xtaint.ml
    │   ├── Xtaint.mli
    │   └── dune
    ├── target
    │   ├── Origin.ml
    │   ├── Origin.mli
    │   ├── Product.ml
    │   ├── Product.mli
    │   ├── Target.ml
    │   ├── Target.mli
    │   ├── Target_kind.ml
    │   ├── Target_kind.mli
    │   ├── Xtarget.ml
    │   ├── Xtarget.mli
    │   └── dune
    ├── targeting
    │   ├── Filter_target.ml
    │   ├── Filter_target.mli
    │   ├── Find_targets.ml
    │   ├── Find_targets.mli
    │   ├── Find_targets_lang.ml
    │   ├── Find_targets_lang.mli
    │   ├── Guess_lang.ml
    │   ├── Guess_lang.mli
    │   ├── Include_filter.ml
    │   ├── Include_filter.mli
    │   ├── Log_targeting.ml
    │   ├── Scanning_root.ml
    │   ├── Scanning_root.mli
    │   ├── Semgrepignore.ml
    │   ├── Semgrepignore.mli
    │   ├── Skip_target.ml
    │   ├── Skip_target.mli
    │   ├── Targeting_stat.ml
    │   ├── Targeting_stat.mli
    │   ├── Unit_find_targets.ml
    │   ├── Unit_find_targets.mli
    │   ├── Unit_guess_lang.ml
    │   ├── Unit_guess_lang.mli
    │   ├── Unit_include_filter.ml
    │   ├── Unit_include_filter.mli
    │   ├── Unit_semgrepignore.ml
    │   ├── Unit_semgrepignore.mli
    │   ├── default.semgrepignore
    │   └── dune
    ├── tests
    │   ├── Test.ml
    │   └── dune
    └── typing
    │   ├── Typing.ml
    │   ├── Typing.mli
    │   └── dune
├── stats
    ├── autofix-printing-stats
    │   ├── .gitignore
    │   ├── projects.txt
    │   └── run
    └── parsing-stats
    │   ├── .gitignore
    │   ├── Makefile
    │   ├── README.md
    │   ├── lang
    │       ├── bash
    │       │   └── projects.txt
    │       ├── c
    │       │   └── projects.txt
    │       ├── cpp
    │       │   └── projects.txt
    │       ├── csharp
    │       │   └── projects.txt
    │       ├── go
    │       │   └── projects.txt
    │       ├── hcl
    │       │   └── projects.txt
    │       ├── java
    │       │   └── projects.txt
    │       ├── javascript
    │       │   └── projects.txt
    │       ├── julia
    │       │   └── projects.txt
    │       ├── kotlin
    │       │   └── projects.txt
    │       ├── lua
    │       │   └── projects.txt
    │       ├── move_on_aptos
    │       │   └── projects.txt
    │       ├── ocaml
    │       │   └── projects.txt
    │       ├── php
    │       │   └── projects.txt
    │       ├── python
    │       │   └── projects.txt
    │       ├── ql
    │       │   └── projects.txt
    │       ├── ruby
    │       │   └── projects.txt
    │       ├── rust
    │       │   └── projects.txt
    │       ├── scala
    │       │   └── projects.txt
    │       ├── solidity
    │       │   └── projects.txt
    │       ├── swift
    │       │   └── projects.txt
    │       └── typescript
    │       │   └── projects.txt
    │   ├── run-all
    │   ├── run-lang
    │   ├── skipped-lang
    │       ├── dart
    │       │   └── projects.txt
    │       ├── elixir
    │       │   └── projects.txt
    │       ├── hack
    │       │   └── projects.txt
    │       ├── r
    │       │   └── projects.txt
    │       └── readme.txt
    │   ├── test-parsing
    │       ├── .gitignore
    │       ├── Makefile
    │       └── lang
    │       │   ├── javascript
    │       │       └── projects.txt
    │       │   └── ocaml
    │       │       └── projects.txt
    │   ├── test-upload
    │       └── lang
    │       │   └── test
    │       │       └── stats.json
    │   └── upload-parsing-rates
├── test
├── tests
    ├── README.md
    ├── TODO
    │   ├── bad.py
    │   ├── basic.sgrep
    │   ├── class.py
    │   ├── dots.sgrep
    │   ├── expr_vs_stmt_metavar.sgrep
    │   ├── flask.py
    │   ├── foo.js
    │   ├── foo.py
    │   ├── global.py
    │   ├── imports.py
    │   ├── imports2.py
    │   ├── metavar.sgrep
    │   ├── misc_export_default_ext.js
    │   ├── name_metavar.sgrep
    │   ├── naming.java
    │   ├── protocol.sgrep
    │   ├── stmt.sgrep
    │   ├── stmt_basic.sgrep
    │   ├── stmt_dots.sgrep
    │   ├── stmt_ellipsis.py
    │   ├── stmt_ellipsis.sgrep
    │   ├── stmt_metavar.sgrep
    │   ├── string.sgrep
    │   ├── stupid.py
    │   ├── stupid_if.sgrep
    │   ├── test.py
    │   └── unify.sgrep
    ├── autofix
    │   ├── cairo
    │   │   ├── fix_vardef.cairo
    │   │   ├── fix_vardef.fix
    │   │   ├── fix_vardef.fixed
    │   │   └── fix_vardef.sgrep
    │   ├── cpp
    │   │   ├── fix_vardef.cpp
    │   │   ├── fix_vardef.fix
    │   │   ├── fix_vardef.fixed
    │   │   └── fix_vardef.sgrep
    │   ├── csharp
    │   │   ├── fix_vardef.cs
    │   │   ├── fix_vardef.fix
    │   │   ├── fix_vardef.fixed
    │   │   └── fix_vardef.sgrep
    │   ├── dart
    │   │   ├── fix_vardef.dart
    │   │   ├── fix_vardef.fix
    │   │   ├── fix_vardef.fixed
    │   │   └── fix_vardef.sgrep
    │   ├── java
    │   │   ├── fix_vardef.fix
    │   │   ├── fix_vardef.fixed
    │   │   ├── fix_vardef.java
    │   │   └── fix_vardef.sgrep
    │   ├── js
    │   │   ├── arrow_func.fix
    │   │   ├── arrow_func.fixed
    │   │   ├── arrow_func.js
    │   │   ├── arrow_func.sgrep
    │   │   ├── fix_obj.fix
    │   │   ├── fix_obj.fixed
    │   │   ├── fix_obj.js
    │   │   ├── fix_obj.sgrep
    │   │   ├── metavar_arg.fix
    │   │   ├── metavar_arg.fixed
    │   │   ├── metavar_arg.js
    │   │   ├── metavar_call.fix
    │   │   ├── metavar_call.fixed
    │   │   └── metavar_call.js
    │   ├── ocaml
    │   │   ├── poly_paren_type.fix
    │   │   ├── poly_paren_type.fixed
    │   │   ├── poly_paren_type.ml
    │   │   ├── poly_paren_type.sgrep
    │   │   ├── val.fix
    │   │   ├── val.fixed
    │   │   ├── val.ml
    │   │   └── val.sgrep
    │   ├── python
    │   │   ├── aligned_fix.fix
    │   │   ├── aligned_fix.fixed
    │   │   ├── aligned_fix.py
    │   │   ├── aligned_fix.sgrep
    │   │   ├── aligned_fix_non_ast.fix
    │   │   ├── aligned_fix_non_ast.fixed
    │   │   ├── aligned_fix_non_ast.py
    │   │   ├── aligned_fix_non_ast.sgrep
    │   │   ├── capture_group.fix-regex
    │   │   ├── capture_group.fixed
    │   │   ├── capture_group.py
    │   │   ├── capture_group.sgrep
    │   │   ├── fix_binop.fix
    │   │   ├── fix_binop.fixed
    │   │   ├── fix_binop.py
    │   │   ├── fix_binop.sgrep
    │   │   ├── fix_dotted_ident.fix
    │   │   ├── fix_dotted_ident.fixed
    │   │   ├── fix_dotted_ident.py
    │   │   ├── fix_dotted_ident.sgrep
    │   │   ├── fix_ellipsis_metavar.fix
    │   │   ├── fix_ellipsis_metavar.fixed
    │   │   ├── fix_ellipsis_metavar.py
    │   │   ├── fix_ellipsis_metavar.sgrep
    │   │   ├── fix_within_binop.fix
    │   │   ├── fix_within_binop.fixed
    │   │   ├── fix_within_binop.py
    │   │   ├── fix_within_binop.sgrep
    │   │   ├── metavar_call.fix
    │   │   ├── metavar_call.fixed
    │   │   ├── metavar_call.py
    │   │   ├── metavar_string2.fix
    │   │   ├── metavar_string2.fixed
    │   │   ├── metavar_string2.py
    │   │   ├── metavar_string2.sgrep
    │   │   ├── regexp_count.fix-regex
    │   │   ├── regexp_count.fixed
    │   │   ├── regexp_count.py
    │   │   ├── regexp_count.sgrep
    │   │   ├── regexp_overcount.fix-regex
    │   │   ├── regexp_overcount.fixed
    │   │   ├── regexp_overcount.py
    │   │   ├── regexp_overcount.sgrep
    │   │   ├── simple_regexp.fix-regex
    │   │   ├── simple_regexp.fixed
    │   │   ├── simple_regexp.py
    │   │   └── simple_regexp.sgrep
    │   ├── rust
    │   │   ├── fix_vardef.fix
    │   │   ├── fix_vardef.fixed
    │   │   ├── fix_vardef.rs
    │   │   └── fix_vardef.sgrep
    │   ├── solidity
    │   │   ├── fix_vardef.fix
    │   │   ├── fix_vardef.fixed
    │   │   ├── fix_vardef.sgrep
    │   │   └── fix_vardef.sol
    │   └── ts
    │   │   ├── fix_cast.fix
    │   │   ├── fix_cast.fixed
    │   │   ├── fix_cast.sgrep
    │   │   └── fix_cast.ts
    ├── errors
    │   ├── bad_indentation.yaml
    │   ├── bad_language.yaml
    │   ├── bad_regexp.yaml
    │   ├── bad_severity.yaml
    │   ├── empty_languages.yaml
    │   ├── ignored_metavar_regex.yaml
    │   ├── missing_id.yaml
    │   ├── only_negative_terms.yaml
    │   ├── pattern_where_python_deprecated.yaml
    │   ├── rules_recovery.yaml
    │   ├── unknown_metavariable.yaml
    │   ├── unknown_metavariable2.yaml
    │   └── unsatisfiable_formula.yaml
    ├── eval
    │   ├── duration1.json
    │   ├── duration2.json
    │   ├── float.json
    │   ├── in_list.json
    │   ├── mixed_int_and_float.json
    │   ├── modulo_expr.json
    │   ├── regexp.json
    │   ├── regexp2.json
    │   ├── regexp3.json
    │   └── simple_expr.json
    ├── explanations
    │   ├── explain_basic.py
    │   ├── explain_basic.yaml
    │   ├── explain_focus.py
    │   ├── explain_focus.yaml
    │   ├── explain_metavar_cond.py
    │   ├── explain_metavar_cond.yaml
    │   ├── explain_negation.py
    │   ├── explain_negation.yaml
    │   ├── explain_subpatterns.py
    │   ├── explain_subpatterns.yaml
    │   ├── explain_taint.py
    │   └── explain_taint.yaml
    ├── irrelevant_rules
    │   ├── mvar-regex.cs
    │   ├── mvar-regex.yaml
    │   ├── mvar-regex1.txt
    │   ├── mvar-regex1.yaml
    │   ├── mvar-regex2.go
    │   ├── mvar-regex2.yaml
    │   ├── pattern-and-one-general.js
    │   ├── pattern-and-one-general.yaml
    │   ├── pattern-and.py
    │   ├── pattern-and.yaml
    │   ├── pattern-either.py
    │   ├── pattern-either.yaml
    │   ├── pattern-or.js
    │   ├── pattern-or.yaml
    │   ├── pattern-regex.py
    │   ├── pattern-regex.yaml
    │   ├── pattern.py
    │   ├── pattern.yaml
    │   ├── taint-general-sink.py
    │   ├── taint-general-sink.yaml
    │   ├── taint-general-source.py
    │   ├── taint-general-source.yaml
    │   ├── typed-mvar.java
    │   └── typed-mvar.yaml
    ├── jsonnet
    │   ├── LICENSE.md
    │   ├── errors
    │   │   ├── arith_not_number_runtime.jsonnet
    │   │   ├── dupe_field_runtime.jsonnet
    │   │   ├── dupe_field_static.jsonnet
    │   │   ├── error1.jsonnet
    │   │   ├── error2.jsonnet
    │   │   ├── floor_not_float.jsonnet
    │   │   ├── not_field_runtime.jsonnet
    │   │   ├── object_comprehension1.json
    │   │   ├── object_comprehension1.jsonnet
    │   │   ├── object_comprehension2.json
    │   │   ├── object_comprehension2.jsonnet
    │   │   ├── string_invalid_access.jsonnet
    │   │   └── super_no_super_class_runtime.jsonnet
    │   ├── fail
    │   │   └── infinite_loops_or_too_slow
    │   │   │   └── Readme.md
    │   ├── libs
    │   │   └── local.libsonnet
    │   ├── only_envir
    │   │   ├── array_comprehension1.json
    │   │   ├── array_comprehension1.jsonnet
    │   │   ├── format.json
    │   │   ├── format.jsonnet
    │   │   ├── format_percent.json
    │   │   ├── format_percent.jsonnet
    │   │   ├── format_string.json
    │   │   └── format_string.jsonnet
    │   ├── only_subst
    │   │   ├── basic_super.json
    │   │   ├── basic_super.jsonnet
    │   │   ├── basic_super2.json
    │   │   ├── basic_super2.jsonnet
    │   │   ├── grandparent_with_super.json
    │   │   ├── grandparent_with_super.jsonnet
    │   │   ├── multiple_inheritance.json
    │   │   ├── multiple_inheritance.jsonnet
    │   │   ├── static_binding_in_super_object.json
    │   │   └── static_binding_in_super_object.jsonnet
    │   ├── pass
    │   │   ├── adding_self_to_self.json
    │   │   ├── adding_self_to_self.jsonnet
    │   │   ├── array_comprehension2.json
    │   │   ├── array_comprehension2.jsonnet
    │   │   ├── basic.json
    │   │   ├── basic.jsonnet
    │   │   ├── basic_super1.json
    │   │   ├── basic_super1.jsonnet
    │   │   ├── closure.json
    │   │   ├── closure.jsonnet
    │   │   ├── closure2.json
    │   │   ├── closure2.jsonnet
    │   │   ├── concat1.json
    │   │   ├── concat1.jsonnet
    │   │   ├── concat2.json
    │   │   ├── concat2.jsonnet
    │   │   ├── extending_self_on_left.json
    │   │   ├── extending_self_on_left.jsonnet
    │   │   ├── extending_self_on_right.json
    │   │   ├── extending_self_on_right.jsonnet
    │   │   ├── filter.json
    │   │   ├── filter.jsonnet
    │   │   ├── foo.txt
    │   │   ├── function.json
    │   │   ├── function.jsonnet
    │   │   ├── import.json
    │   │   ├── import.jsonnet
    │   │   ├── import_local.json
    │   │   ├── import_local.jsonnet
    │   │   ├── importstr.json
    │   │   ├── importstr.jsonnet
    │   │   ├── inf.json
    │   │   ├── inf.jsonnet
    │   │   ├── internal_merge.json
    │   │   ├── internal_merge.jsonnet
    │   │   ├── length.json
    │   │   ├── length.jsonnet
    │   │   ├── locals_in_objects.json
    │   │   ├── locals_in_objects.jsonnet
    │   │   ├── multiple_inheritance_with_empty.json
    │   │   ├── multiple_inheritance_with_empty.jsonnet
    │   │   ├── nested_object_with_self.json
    │   │   ├── nested_object_with_self.jsonnet
    │   │   ├── null_field.json
    │   │   ├── null_field.jsonnet
    │   │   ├── obj_access.json
    │   │   ├── obj_access.jsonnet
    │   │   ├── object.json
    │   │   ├── object.jsonnet
    │   │   ├── objectHas.json
    │   │   ├── objectHas.jsonnet
    │   │   ├── plus_object.json
    │   │   ├── plus_object.jsonnet
    │   │   ├── render_int.json
    │   │   ├── render_int.jsonnet
    │   │   ├── returning_self.json
    │   │   ├── returning_self.jsonnet
    │   │   ├── self_access.json
    │   │   ├── self_access.jsonnet
    │   │   ├── self_as_object.json
    │   │   ├── self_as_object.jsonnet
    │   │   ├── self_bound_correctly_in_superobjects.json
    │   │   ├── self_bound_correctly_in_superobjects.jsonnet
    │   │   ├── self_in_array.json
    │   │   ├── self_in_array.jsonnet
    │   │   ├── short_circuit_func.json
    │   │   ├── short_circuit_func.jsonnet
    │   │   ├── simple_self.json
    │   │   ├── simple_self.jsonnet
    │   │   ├── simple_self_with_plus.json
    │   │   ├── simple_self_with_plus.jsonnet
    │   │   ├── simple_test.json
    │   │   ├── simple_test.jsonnet
    │   │   ├── string.json
    │   │   ├── string.jsonnet
    │   │   ├── string_access.json
    │   │   ├── string_access.jsonnet
    │   │   ├── super_up_two_levels.json
    │   │   ├── super_up_two_levels.jsonnet
    │   │   ├── use_std.json
    │   │   └── use_std.jsonnet
    │   ├── readme.txt
    │   └── tutorial
    │   │   ├── errors
    │   │       └── error-examples.jsonnet
    │   │   ├── fail
    │   │       ├── arith.json
    │   │       ├── arith.jsonnet
    │   │       ├── comprehensions.json
    │   │       ├── comprehensions.jsonnet
    │   │       ├── functions.json
    │   │       └── functions.jsonnet
    │   │   ├── libs
    │   │       ├── martinis.libsonnet
    │   │       ├── templates.libsonnet
    │   │       └── utils.libsonnet
    │   │   ├── only_envir
    │   │       ├── negroni.json
    │   │       └── negroni.jsonnet
    │   │   ├── only_subst
    │   │       ├── oo-contrived.json
    │   │       ├── oo-contrived.jsonnet
    │   │       ├── sours_oo.json
    │   │       └── sours_oo.jsonnet
    │   │   ├── parse_errors
    │   │       ├── library_ext.libsonnet
    │   │       ├── library_tla.libsonnet
    │   │       ├── top_level_ext.json
    │   │       ├── top_level_ext.jsonnet
    │   │       ├── top_level_tla.json
    │   │       └── top_level_tla.jsonnet
    │   │   ├── pass
    │   │       ├── computer_fields.json
    │   │       ├── computer_fields.jsonnet
    │   │       ├── conditionals.json
    │   │       ├── conditionals.jsonnet
    │   │       ├── garnish.txt
    │   │       ├── imports.json
    │   │       ├── imports.jsonnet
    │   │       ├── inner_references.json
    │   │       ├── inner_references.jsonnet
    │   │       ├── references.json
    │   │       ├── references.jsonnet
    │   │       ├── sours.json
    │   │       ├── sours.jsonnet
    │   │       ├── variables.json
    │   │       └── variables.jsonnet
    │   │   └── too_slow
    │   │       ├── mixins.json
    │   │       └── mixins.jsonnet
    ├── login
    │   ├── bad_response.json
    │   ├── fetch_body.json
    │   ├── ok_response.json
    │   └── token_response.json
    ├── ls
    │   └── ci
    │   │   └── rule_conf_resp.json
    ├── metachecks
    │   ├── explicit-regex-capture.rule.yaml
    │   ├── explicit-regex-capture.yaml
    │   ├── implicit-regex-capture.rule.yaml
    │   ├── implicit-regex-capture.yaml
    │   ├── metavariable-ellipsis.rule.yaml
    │   ├── metavariable-ellipsis.yaml
    │   ├── metavariable-pattern.rule.yaml
    │   ├── metavariable-pattern.yaml
    │   ├── nested-focus-metavariable.rule.yaml
    │   ├── nested-focus-metavariable.yaml
    │   ├── slow_pattern.rule.yaml
    │   ├── slow_pattern.yaml
    │   ├── unbound-metavariable.rule.yaml
    │   └── unbound-metavariable.yaml
    ├── misc
    │   ├── controlflow
    │   │   ├── goto.c
    │   │   ├── if.php
    │   │   ├── if.py
    │   │   └── while.py
    │   ├── dataflow
    │   │   ├── big-mult.py
    │   │   ├── div-by-zero.py
    │   │   ├── liveness.py
    │   │   ├── mult.py
    │   │   ├── reaching.py
    │   │   ├── tainting.py
    │   │   └── while.py
    │   ├── equivalences
    │   │   └── test.py
    │   ├── experimental_diff
    │   │   ├── array_access.yaml
    │   │   └── typed_metavars.yaml
    │   ├── il
    │   │   ├── array.js
    │   │   ├── assert.py
    │   │   ├── assignop.c
    │   │   ├── basic.py
    │   │   ├── call.py
    │   │   ├── cond.c
    │   │   ├── container.py
    │   │   ├── dot.js
    │   │   ├── dowhile.js
    │   │   ├── for.c
    │   │   ├── foreach.py
    │   │   ├── goto.c
    │   │   ├── if.py
    │   │   ├── incr_decr.c
    │   │   ├── lambda.js
    │   │   ├── seq.c
    │   │   ├── var.js
    │   │   ├── var.py
    │   │   └── while.py
    │   ├── jsonnet
    │   │   ├── lib_semgrep.jsonnet
    │   │   ├── metavar_cond.jsonnet
    │   │   ├── metavar_cond2.jsonnet
    │   │   ├── metavar_cond_octal.jsonnet
    │   │   ├── metavar_regex.jsonnet
    │   │   ├── negation_ajin.jsonnet
    │   │   ├── negation_ajin_orig_jsonnet
    │   │   ├── notes.txt
    │   │   ├── regexp.jsonnet
    │   │   └── regexp_nomatch.jsonnet
    │   ├── naming
    │   │   ├── inside.py
    │   │   ├── inside.yaml
    │   │   ├── scope_basic.py
    │   │   ├── scope_python.py
    │   │   └── scope_python.yml
    │   ├── otarzan
    │   │   ├── app.ml
    │   │   ├── expr.ml
    │   │   ├── poly.ml
    │   │   ├── qualified_alias.ml
    │   │   ├── record.ml
    │   │   ├── stmt.ml
    │   │   └── tuple.ml
    │   ├── perf
    │   │   └── input
    │   │   │   ├── stmts-double-ellipsis-abb.sgrep
    │   │   │   ├── stmts-double-ellipsis-abc.sgrep
    │   │   │   └── stmts-ellipsis-ab.sgrep
    │   ├── skipping_errors
    │   │   └── test.js
    │   ├── tainting
    │   │   ├── hello_world.java
    │   │   ├── simple.java
    │   │   ├── tainting.py
    │   │   └── tainting2.py
    │   └── target_file
    │   │   ├── target_file.list
    │   │   └── target_file_newline.list
    ├── naming
    │   ├── go
    │   │   ├── const_propagation.go
    │   │   └── vardef_vs_use.go
    │   ├── java
    │   │   ├── unknown_var.java
    │   │   └── vardef_vs_use.java
    │   ├── js
    │   │   └── vardef_vs_use.js
    │   └── python
    │   │   ├── assign_vardef.py
    │   │   ├── exn.py
    │   │   ├── iterator.py
    │   │   ├── regression1.py
    │   │   ├── scope.py
    │   │   └── shadow_name_type.py
    ├── osemgrep
    │   └── osemgrep.yml
    ├── parsing
    │   ├── bash
    │   │   ├── and-cond.bash
    │   │   ├── for-no-in.bash
    │   │   ├── hello.bash
    │   │   ├── pipe-or.bash
    │   │   └── pipe-redirect.bash
    │   ├── c
    │   │   ├── asm_stmt.c
    │   │   ├── basic.c
    │   │   └── char.c
    │   ├── cairo
    │   │   └── hello.cairo
    │   ├── circom
    │   │   └── multiply.circom
    │   ├── clojure
    │   │   └── zip.clj
    │   ├── cpp
    │   │   ├── ambiguity_typedef.cpp
    │   │   ├── asm_stmt.cpp
    │   │   ├── char.cpp
    │   │   ├── class.cpp
    │   │   ├── hello.cpp
    │   │   ├── operator_paren.cpp
    │   │   ├── operator_templated2.cpp
    │   │   ├── operator_templated3.cpp
    │   │   ├── parenthesized_assignment.cpp
    │   │   ├── pointer_type_declarator_ident.cpp
    │   │   └── switch.cpp
    │   ├── csharp
    │   │   ├── async.cs
    │   │   ├── attributes.cs
    │   │   ├── condaccess.cs
    │   │   ├── defaultoperator.cs
    │   │   ├── events.cs
    │   │   ├── exceptions.cs
    │   │   ├── extern_alias.cs
    │   │   ├── finalizer.cs
    │   │   ├── foreach.cs
    │   │   ├── forloop.cs
    │   │   ├── goto.cs
    │   │   ├── hello_world.cs
    │   │   ├── implicit_typing.cs
    │   │   ├── indexer.cs
    │   │   ├── linq.cs
    │   │   ├── localfunc.cs
    │   │   ├── lock.cs
    │   │   ├── makeref.cs
    │   │   ├── namespace_file_level.cs
    │   │   ├── object_initializer.cs
    │   │   ├── operatoroverload.cs
    │   │   ├── patternmatch.cs
    │   │   ├── range.cs
    │   │   ├── reserved.cs
    │   │   ├── strings.cs
    │   │   ├── tuples.cs
    │   │   ├── typeconstraints.cs
    │   │   ├── unchecked.cs
    │   │   ├── unsafe.cs
    │   │   ├── using.cs
    │   │   └── with_expression.cs
    │   ├── dart
    │   │   ├── class.dart
    │   │   ├── fib.dart
    │   │   └── hello.dart
    │   ├── dockerfile
    │   │   ├── no-trailing-newline-segfault.dockerfile
    │   │   ├── no-trailing-newline.dockerfile
    │   │   ├── numeric-user.dockerfile
    │   │   ├── semgrep.dockerfile
    │   │   └── user.dockerfile
    │   ├── go
    │   │   ├── generics_qualified.go
    │   │   ├── if_header_type.go
    │   │   ├── multi_line_raw_string.go
    │   │   ├── string.go
    │   │   ├── test_unicode.go
    │   │   └── unicode_rune.go
    │   ├── hack
    │   │   └── test.hack
    │   ├── html
    │   │   └── hello.html
    │   ├── java
    │   │   ├── accent.java
    │   │   ├── annotGeneric.java
    │   │   ├── annotStmt.java
    │   │   ├── annot_interface.java
    │   │   ├── annot_interface2.java
    │   │   ├── enumArgsAndBody.java
    │   │   ├── field.java
    │   │   ├── generics0.java
    │   │   ├── generics1.java
    │   │   ├── generics2.java
    │   │   ├── generics3.java
    │   │   ├── generics4.java
    │   │   ├── println.java
    │   │   ├── record.java
    │   │   ├── simple_addition.java
    │   │   ├── textblocks.java
    │   │   ├── this.java
    │   │   ├── this2.java
    │   │   └── this_implicit.java
    │   ├── js
    │   │   ├── cp_assign_record_assign.js
    │   │   ├── html-comment.js
    │   │   ├── import.js
    │   │   ├── jsx.js
    │   │   └── require.js
    │   ├── json
    │   │   └── simple.json
    │   ├── jsonnet
    │   │   ├── call_3args.jsonnet
    │   │   ├── exclude_files.jsonnet
    │   │   ├── foo.jsonnet
    │   │   ├── myformula.jsonnet
    │   │   ├── myrule.jsonnet
    │   │   ├── std.jsonnet
    │   │   ├── string.jsonnet
    │   │   └── tailstrict.jsonnet
    │   ├── julia
    │   │   └── helloworld.jl
    │   ├── kotlin
    │   │   ├── binary-func.kt
    │   │   ├── class_newline.kt
    │   │   ├── eldritch.kt
    │   │   ├── enum.kt
    │   │   ├── generics.kt
    │   │   ├── hello-world.kt
    │   │   ├── navigation.kt
    │   │   ├── parent_with_args.kt
    │   │   ├── prim-expr.kt
    │   │   ├── small-program.kt
    │   │   ├── string.kt
    │   │   ├── types.kt
    │   │   └── unary.kt
    │   ├── lua
    │   │   ├── for_in.lua
    │   │   ├── hello_world.lua
    │   │   ├── labels.lua
    │   │   ├── local_empty.lua
    │   │   ├── multi_return.lua
    │   │   ├── nested_table.lua
    │   │   ├── one.lua
    │   │   ├── prefix.lua
    │   │   ├── prim_expr.lua
    │   │   └── varargs.lua
    │   ├── move_on_aptos
    │   │   ├── basic.move
    │   │   └── test.move
    │   ├── move_on_sui
    │   │   ├── TODO
    │   │   │   ├── TODO.txt
    │   │   │   ├── basic.TODO
    │   │   │   └── test.TODO
    │   │   ├── address.move
    │   │   ├── annotations.move
    │   │   ├── as_expressions.move
    │   │   ├── ascii.move
    │   │   ├── authenticator_state.move
    │   │   ├── bag.move
    │   │   ├── balance.move
    │   │   ├── bcs.move
    │   │   ├── bit_vector.move
    │   │   ├── borrow.move
    │   │   ├── clock.move
    │   │   ├── coin.move
    │   │   ├── damir1.move
    │   │   ├── damir2.move
    │   │   ├── damir3.move
    │   │   ├── damir4.move
    │   │   ├── damir5.move
    │   │   ├── debug.move
    │   │   ├── display.move
    │   │   ├── dotted_vector_literal_access.move
    │   │   ├── dynamic_field.move
    │   │   ├── dynamic_object_field.move
    │   │   ├── event.move
    │   │   ├── fixed_point32.move
    │   │   ├── hash.move
    │   │   ├── hex.move
    │   │   ├── linked_table.move
    │   │   ├── literal_address_module_and_pos_structs.move
    │   │   ├── math.move
    │   │   ├── module_labels.move
    │   │   ├── module_uses.move
    │   │   ├── multi_index_test.move
    │   │   ├── named_address_test.move
    │   │   ├── native_structs.move
    │   │   ├── new_syntax_file.move
    │   │   ├── object.move
    │   │   ├── object_bag.move
    │   │   ├── object_table.move
    │   │   ├── option.move
    │   │   ├── package.move
    │   │   ├── pay.move
    │   │   ├── priority_queue.move
    │   │   ├── prover.move
    │   │   ├── random.move
    │   │   ├── simple_module.move
    │   │   ├── string.move
    │   │   ├── sui.move
    │   │   ├── table.move
    │   │   ├── table_vec.move
    │   │   ├── token.move
    │   │   ├── transfer.move
    │   │   ├── tx_context.move
    │   │   ├── type_name.move
    │   │   ├── types.move
    │   │   ├── unit_test.move
    │   │   ├── url.move
    │   │   ├── variant_creation.move
    │   │   ├── vec_map.move
    │   │   ├── vec_set.move
    │   │   ├── vector.move
    │   │   └── versioned.move
    │   ├── ocaml
    │   │   ├── attribute_type.ml
    │   │   ├── basic.mli
    │   │   ├── class.ml
    │   │   ├── fun_typed_ret.ml
    │   │   ├── function_match.ml
    │   │   ├── functor_application.ml
    │   │   ├── let_module.ml
    │   │   ├── object_type.ml
    │   │   ├── object_type2.ml
    │   │   ├── object_type2.mli
    │   │   ├── objfield_assign.ml
    │   │   └── typed_pattern.ml
    │   ├── php
    │   │   ├── arrow.php
    │   │   ├── attributes.php
    │   │   ├── attributes_qualified.php
    │   │   ├── attributes_qualified2.php
    │   │   ├── catch_or.php
    │   │   ├── class.php
    │   │   ├── enum.php
    │   │   ├── foreach_destructure_empty_comma.php
    │   │   ├── match_expression.php
    │   │   ├── misc_for_method.php
    │   │   ├── named_arguments.php
    │   │   ├── parameter_type_qualified.php
    │   │   ├── unicode_method.php
    │   │   ├── union_types.php
    │   │   └── union_types2.php
    │   ├── promql
    │   │   └── test.promql
    │   ├── protobuf
    │   │   ├── semgrep_output.proto
    │   │   └── simple.proto
    │   ├── python
    │   │   ├── as_pattern.py
    │   │   ├── field.py
    │   │   ├── pattern_matching.py
    │   │   ├── re.py
    │   │   └── tuple_expansion.py
    │   ├── ql
    │   │   └── basic.ql
    │   ├── r
    │   │   └── hello-world.r
    │   ├── ruby
    │   │   ├── atom_kwd_trailing_comma.rb
    │   │   ├── dots_forwarding.rb
    │   │   ├── heredoc.rb
    │   │   ├── heredoc2.rb
    │   │   ├── rational_float.rb
    │   │   └── string.rb
    │   ├── rust
    │   │   ├── async.rs
    │   │   ├── declarations.rs
    │   │   ├── expressions.rs
    │   │   ├── hello_world.rs
    │   │   ├── inner_attr_stmt.rs
    │   │   ├── literals.rs
    │   │   ├── macros.rs
    │   │   ├── patterns.rs
    │   │   ├── source_files.rs
    │   │   └── types.rs
    │   ├── scala
    │   │   ├── anonymous_types.scala
    │   │   ├── end_markers.scala
    │   │   ├── enums.scala
    │   │   ├── exports.scala
    │   │   ├── expr_case_clause.scala
    │   │   ├── extensions.scala
    │   │   ├── for_exprs.scala
    │   │   ├── fun_dcl.scala
    │   │   ├── function_types.scala
    │   │   ├── generator_guards.scala
    │   │   ├── given_defs.scala
    │   │   ├── if_expr.scala
    │   │   ├── imports.scala
    │   │   ├── indented_block_expr_rhs.scala
    │   │   ├── indented_for_body.scala
    │   │   ├── indented_match.scala
    │   │   ├── indented_package.scala
    │   │   ├── indented_tuple_for_pattern.scala
    │   │   ├── indented_while.scala
    │   │   ├── interpolated_string_no_dedent.scala
    │   │   ├── match_type.scala
    │   │   ├── newline_in_for.scala
    │   │   ├── opaque.scala
    │   │   ├── optional_brace_class.scala
    │   │   ├── optional_brace_object.scala
    │   │   ├── optional_brace_weird_space.scala
    │   │   ├── pat_typed_in_class.scala
    │   │   ├── quoted.scala
    │   │   ├── soft_keywords.scala
    │   │   ├── soft_modifiers.scala
    │   │   ├── splatted_args.scala
    │   │   ├── starred_arrow_param_type.scala
    │   │   ├── type_case_clauses.scala
    │   │   ├── tyrefined.scala
    │   │   ├── using_args.scala
    │   │   ├── using_clauses.scala
    │   │   └── while_expr.scala
    │   ├── solidity
    │   │   └── unchecked.sol
    │   ├── swift
    │   │   ├── class-separator.swift
    │   │   ├── emoji.swift
    │   │   ├── expressions.swift
    │   │   ├── hello-world.swift
    │   │   ├── optional-assignment.swift
    │   │   ├── statements.swift
    │   │   └── switch_expr.swift
    │   ├── terraform
    │   │   ├── simple.tf
    │   │   └── simple.tfvars
    │   ├── ts
    │   │   ├── abstract.ts
    │   │   ├── brace1.ts
    │   │   ├── brace2.ts
    │   │   ├── is.ts
    │   │   ├── keyof.ts
    │   │   ├── keyof2.ts
    │   │   ├── override.ts
    │   │   ├── override_protected.ts
    │   │   ├── override_small.ts
    │   │   ├── override_type.ts
    │   │   ├── template_literal_types.ts
    │   │   └── typeof.ts
    │   └── xml
    │   │   ├── book.xml
    │   │   ├── note.xml
    │   │   ├── pom.xml
    │   │   └── xsschema.xml
    ├── parsing_errors
    │   ├── err.ts
    │   ├── foo.c
    │   ├── skip_tokens.ts
    │   └── unbalanced_brace.py
    ├── parsing_missing
    │   ├── c
    │   │   └── missing-semicolon.c
    │   └── cpp
    │   │   └── missing-semicolon.cpp
    ├── parsing_partial
    │   └── cpp
    │   │   ├── empty_case_body.cpp
    │   │   ├── expecting_ident_param.cpp
    │   │   ├── funcdef_without_params.cpp
    │   │   ├── funcdef_without_params2.cpp
    │   │   ├── operator_templated.cpp
    │   │   ├── operator_templated_partial.cpp
    │   │   └── saf-2016.cpp
    ├── parsing_patterns
    │   ├── go
    │   │   ├── ellipsis_asi.sgrep
    │   │   ├── simple_typed_metavar.sgrep
    │   │   └── struct.sgrep
    │   └── java
    │   │   ├── annotation-ellipsis-after.sgrep
    │   │   ├── annotation-ellipsis-both.sgrep
    │   │   ├── annotation-ellipsis.sgrep
    │   │   ├── ellipsis-concat.sgrep
    │   │   ├── ellipsis-interface.sgrep
    │   │   ├── escape_char.sgrep
    │   │   ├── import.java
    │   │   ├── import.sgrep
    │   │   ├── package.sgrep
    │   │   └── simple-typed-metavar.sgrep
    ├── parsing_todo
    │   ├── cpp
    │   │   ├── expecting_init.cpp
    │   │   └── semicolon.cpp
    │   ├── lua
    │   │   └── builtins.lua
    │   └── protobuf
    │   │   └── error_todo.proto
    ├── patterns
    │   ├── POLYGLOT
    │   │   ├── anonymous_metavar.sgrep
    │   │   ├── concrete_syntax.sgrep
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_expr.sgrep
    │   │   ├── dots_for.sgrep
    │   │   ├── dots_method_chaining.sgrep
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.sgrep
    │   │   ├── equivalence_constant_propagation.sgrep
    │   │   ├── equivalence_float.sgrep
    │   │   ├── equivalence_number.sgrep
    │   │   ├── metavar_anno.sgrep
    │   │   ├── metavar_arg.sgrep
    │   │   ├── metavar_call.sgrep
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.sgrep
    │   │   ├── metavar_equality_expr.sgrep
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_key_value.sgrep
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_string.sgrep
    │   │   ├── misc_else_blocks_brace.sgrep
    │   │   ├── misc_else_blocks_no_brace.sgrep
    │   │   ├── misc_if_blocks_brace.sgrep
    │   │   ├── misc_if_blocks_no_brace.sgrep
    │   │   ├── partial_class.sgrep
    │   │   ├── partial_finally.sgrep
    │   │   ├── partial_if.sgrep
    │   │   ├── partial_try.sgrep
    │   │   ├── regexp_case_insensitive.sgrep
    │   │   ├── regexp_pcre.sgrep
    │   │   └── regexp_string.sgrep
    │   ├── TEMPLATE
    │   │   ├── alpha-c-like
    │   │   │   ├── concrete_syntax.xxx
    │   │   │   ├── deep_exprstmt.xxx
    │   │   │   ├── dots_args.xxx
    │   │   │   ├── dots_nested_stmts.xxx
    │   │   │   ├── dots_stmts.xxx
    │   │   │   ├── dots_string.xxx
    │   │   │   ├── metavar_arg.xxx
    │   │   │   ├── metavar_call.xxx
    │   │   │   └── metavar_equality_var.xxx
    │   │   ├── alpha-python-like
    │   │   │   ├── concrete_syntax.xxx
    │   │   │   ├── deep_exprstmt.xxx
    │   │   │   ├── dots_args.xxx
    │   │   │   ├── dots_nested_stmts.xxx
    │   │   │   ├── dots_stmts.xxx
    │   │   │   ├── dots_string.xxx
    │   │   │   ├── metavar_arg.xxx
    │   │   │   ├── metavar_call.xxx
    │   │   │   └── metavar_equality_var.xxx
    │   │   ├── beta-c-like
    │   │   │   ├── metavar_class_def.java
    │   │   │   ├── metavar_cond.java
    │   │   │   ├── metavar_equality_expr.java
    │   │   │   ├── metavar_equality_stmt.java
    │   │   │   ├── metavar_func_def.java
    │   │   │   ├── metavar_import.java
    │   │   │   └── metavar_stmt.java
    │   │   └── doc.txt
    │   ├── bash
    │   │   ├── added_identifier.sh
    │   │   ├── added_identifier.yaml
    │   │   ├── anchored-stmt.bash
    │   │   ├── anchored-stmt.sgrep
    │   │   ├── anonymous_metavar.bash
    │   │   ├── arg-ellipsis.bash
    │   │   ├── arg-ellipsis.sgrep
    │   │   ├── arg-named-ellipsis.bash
    │   │   ├── arg-named-ellipsis.sgrep
    │   │   ├── array-ellipsis.bash
    │   │   ├── array-ellipsis.sgrep
    │   │   ├── assign-add.bash
    │   │   ├── assign-add.sgrep
    │   │   ├── assign.bash
    │   │   ├── assign.sgrep
    │   │   ├── background.bash
    │   │   ├── background.sgrep
    │   │   ├── case-body.bash
    │   │   ├── case-body.sgrep
    │   │   ├── command-substitution-body.bash
    │   │   ├── command-substitution-body.sgrep
    │   │   ├── command-substitution.bash
    │   │   ├── command-substitution.sgrep
    │   │   ├── concatenation-ellipsis-args.bash
    │   │   ├── concatenation-ellipsis-args.sgrep
    │   │   ├── concatenation-ellipsis.bash
    │   │   ├── concatenation-ellipsis.sgrep
    │   │   ├── concatenation-named-ellipsis-args.bash
    │   │   ├── concatenation-named-ellipsis-args.sgrep
    │   │   ├── concatenation-named-ellipsis.bash
    │   │   ├── concatenation-named-ellipsis.sgrep
    │   │   ├── concatenation.bash
    │   │   ├── concatenation.sgrep
    │   │   ├── concrete_syntax.bash
    │   │   ├── concrete_syntax.sgrep
    │   │   ├── declaration-assignments.bash
    │   │   ├── declaration-assignments.sgrep
    │   │   ├── deep_expr_operator.bash
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_exprstmt.bash
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── dots_args.bash
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_nested_stmts.bash
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.bash
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.bash
    │   │   ├── dots_string.sgrep
    │   │   ├── empty.bash
    │   │   ├── empty.sgrep
    │   │   ├── expression.bash
    │   │   ├── expression.sgrep
    │   │   ├── for-body.bash
    │   │   ├── for-body.sgrep
    │   │   ├── for-elt-ellipsis.bash
    │   │   ├── for-elt-ellipsis.sgrep
    │   │   ├── for-metavar.bash
    │   │   ├── for-metavar.sgrep
    │   │   ├── function-body.bash
    │   │   ├── function-body.sgrep
    │   │   ├── function-metavar.bash
    │   │   ├── function-metavar.sgrep
    │   │   ├── function.bash
    │   │   ├── function.sgrep
    │   │   ├── hello.bash
    │   │   ├── hello.sgrep
    │   │   ├── if-body.bash
    │   │   ├── if-body.sgrep
    │   │   ├── if-header.bash
    │   │   ├── if-header.sgrep
    │   │   ├── match-cmd-or-arg.bash
    │   │   ├── match-cmd-or-arg.sgrep
    │   │   ├── metavar_arg.bash
    │   │   ├── metavar_arg.sgrep
    │   │   ├── metavar_call.bash
    │   │   ├── metavar_call.sgrep
    │   │   ├── metavar_equality_expr.bash
    │   │   ├── metavar_equality_expr.sgrep
    │   │   ├── metavar_equality_var.bash
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.bash
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── nested_stmts.bash
    │   │   ├── nested_stmts.sgrep
    │   │   ├── normalize-dquoted-word.bash
    │   │   ├── normalize-dquoted-word.sgrep
    │   │   ├── normalize-squoted-word.bash
    │   │   ├── normalize-squoted-word.sgrep
    │   │   ├── not-an-expression1.bash
    │   │   ├── not-an-expression1.sgrep
    │   │   ├── not-an-expression2.bash
    │   │   ├── not-an-expression2.sgrep
    │   │   ├── not-an-expression3.bash
    │   │   ├── not-an-expression3.sgrep
    │   │   ├── not-an-expression4.bash
    │   │   ├── not-an-expression4.sgrep
    │   │   ├── not-an-expression5.bash
    │   │   ├── not-an-expression5.sgrep
    │   │   ├── not.bash
    │   │   ├── not.sgrep
    │   │   ├── or.bash
    │   │   ├── or.sgrep
    │   │   ├── pipeline.bash
    │   │   ├── pipeline.sgrep
    │   │   ├── quoted-ellipsis.bash
    │   │   ├── quoted-ellipsis.sgrep
    │   │   ├── quoted-ellipsis2.bash
    │   │   ├── quoted-ellipsis2.sgrep
    │   │   ├── quoted-expansion.bash
    │   │   ├── quoted-expansion.sgrep
    │   │   ├── quoted-named-ellipsis.bash
    │   │   ├── quoted-named-ellipsis.sgrep
    │   │   ├── quoted-named-ellipsis2.bash
    │   │   ├── quoted-named-ellipsis2.sgrep
    │   │   ├── select-body.bash
    │   │   ├── select-body.sgrep
    │   │   ├── set-lhs-metavar.bash
    │   │   ├── set-lhs-metavar.sgrep
    │   │   ├── set-rhs-metavar.bash
    │   │   ├── set-rhs-metavar.sgrep
    │   │   ├── stmt-ellipsis.bash
    │   │   ├── stmt-ellipsis.sgrep
    │   │   ├── stmt-named-ellipsis.bash
    │   │   ├── stmt-named-ellipsis.sgrep
    │   │   ├── subshell.bash
    │   │   ├── subshell.sgrep
    │   │   ├── todo
    │   │   │   ├── array-named-ellipsis.bash
    │   │   │   ├── array-named-ellipsis.sgrep
    │   │   │   ├── assign-multi.bash
    │   │   │   ├── assign-multi.sgrep
    │   │   │   ├── c-style-loop.bash
    │   │   │   ├── c-style-loop.sgrep
    │   │   │   ├── deep_exprstmt.sgrep
    │   │   │   ├── for-elt-named-ellipsis.bash
    │   │   │   ├── for-elt-named-ellipsis.sgrep
    │   │   │   ├── until.bash
    │   │   │   ├── until.sgrep
    │   │   │   ├── var-ellipsis-var.bash
    │   │   │   ├── var-ellipsis-var.sgrep
    │   │   │   ├── while-named-ellipsis.bash
    │   │   │   └── while-named-ellipsis.sgrep
    │   │   ├── while-body.bash
    │   │   ├── while-body.sgrep
    │   │   ├── while-ellipsis.bash
    │   │   └── while-ellipsis.sgrep
    │   ├── c
    │   │   ├── aliasing.TODO
    │   │   ├── anonymous_metavar.c
    │   │   ├── concrete_syntax.c
    │   │   ├── const-prop-buf-decl-flow.c
    │   │   ├── const-prop-buf-decl-flow.sgrep
    │   │   ├── const-prop-buf-decl.c
    │   │   ├── const-prop-buf-decl.sgrep
    │   │   ├── deep_expr_operator.c
    │   │   ├── deep_exprstmt.c
    │   │   ├── dots_args.c
    │   │   ├── dots_params.c
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_sizeof.c
    │   │   ├── dots_sizeof.sgrep
    │   │   ├── dots_stmts.c
    │   │   ├── dots_string.c
    │   │   ├── equivalence_float.c
    │   │   ├── equivalence_number.c
    │   │   ├── goto_fail.c
    │   │   ├── goto_fail.sgrep
    │   │   ├── metavar_arg.c
    │   │   ├── metavar_call.c
    │   │   ├── metavar_cond.c
    │   │   ├── metavar_ellipsis_args.c
    │   │   ├── metavar_equality_expr.c
    │   │   ├── metavar_equality_stmt.c
    │   │   ├── metavar_equality_var.c
    │   │   ├── metavar_import.TODO_fail_with_cplusplus
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_stmt.c
    │   │   ├── metavar_typed.c
    │   │   ├── metavar_typed.sgrep
    │   │   ├── metavar_typed_generic.c
    │   │   ├── metavar_typed_generic.sgrep
    │   │   ├── metavar_typed_reuse.c
    │   │   ├── metavar_typed_reuse.sgrep
    │   │   ├── misc_toplevel_macrocall.c
    │   │   ├── misc_toplevel_macrocall.sgrep
    │   │   ├── misc_typedef_inference.c
    │   │   ├── misc_typedef_inference.sgrep
    │   │   ├── partial_parsing
    │   │   │   ├── misc_ifdef_strings.c
    │   │   │   ├── misc_ifdef_strings.sgrep
    │   │   │   └── note.txt
    │   │   └── regexp_string.c
    │   ├── cairo
    │   │   ├── anonymous_metavar.cairo
    │   │   ├── deep_cond.cairo
    │   │   ├── deep_cond.sgrep
    │   │   ├── deep_expr_operator.cairo
    │   │   ├── dots_args.cairo
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_attributes.cairo
    │   │   ├── dots_attributes.sgrep
    │   │   ├── dots_loop.cairo
    │   │   ├── dots_loop.sgrep
    │   │   ├── dots_method_chaining.cairo
    │   │   ├── dots_method_chaining.sgrep
    │   │   ├── metavar_let.cairo
    │   │   ├── metavar_let.sgrep
    │   │   ├── metavar_stmt.cairo
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── misc_impl.cairo
    │   │   └── misc_impl.sgrep
    │   ├── circom
    │   │   ├── anonymous_metavar.circom
    │   │   ├── concrete_syntax.circom
    │   │   ├── deep_expr_operator.circom
    │   │   ├── deep_extrstmt.circom
    │   │   ├── dots_args.circom
    │   │   ├── dots_for.circom
    │   │   ├── dots_nested_stmts.circom
    │   │   ├── dots_stmts.circom
    │   │   ├── dots_template.circom
    │   │   ├── dots_template.sgrep
    │   │   ├── metavar_arg.circom
    │   │   ├── metavar_call.circom
    │   │   ├── metavar_equality_var.circom
    │   │   ├── metavar_version.circom
    │   │   └── metavar_version.sgrep
    │   ├── clojure
    │   │   ├── TODO
    │   │   │   ├── deep_exprstmt.clj
    │   │   │   └── dots_nested_stmts.clj
    │   │   ├── concrete_syntax.clj
    │   │   ├── concrete_syntax.sgrep
    │   │   ├── dots_args.clj
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_stmts.clj
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.clj
    │   │   ├── dots_string.sgrep
    │   │   ├── metavar_arg.clj
    │   │   ├── metavar_arg.sgrep
    │   │   ├── metavar_call.clj
    │   │   ├── metavar_call.sgrep
    │   │   ├── metavar_equality_var.clj
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_slash_access.clj
    │   │   └── metavar_slash_access.sgrep
    │   ├── cp_exception.py
    │   ├── cp_exception.sgrep
    │   ├── cpp
    │   │   ├── anonymous_metavar.cpp
    │   │   ├── block_ellipsis.cpp
    │   │   ├── block_ellipsis.sgrep
    │   │   ├── concrete_syntax.cpp
    │   │   ├── deep_expr_operator.cpp
    │   │   ├── deep_exprstmt.cpp
    │   │   ├── dots_args.cpp
    │   │   ├── dots_for.cpp
    │   │   ├── dots_method_chaining.cpp
    │   │   ├── dots_namespace.cpp
    │   │   ├── dots_namespace.sgrep
    │   │   ├── dots_params.cpp
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_rhs.cpp
    │   │   ├── dots_rhs.sgrep
    │   │   ├── dots_stmts.cpp
    │   │   ├── dots_string.cpp
    │   │   ├── equivalence_float.cpp
    │   │   ├── equivalence_number.cpp
    │   │   ├── metavar_arg.cpp
    │   │   ├── metavar_call.cpp
    │   │   ├── metavar_cond.cpp
    │   │   ├── metavar_ellipsis_args.cpp
    │   │   ├── metavar_equality_expr.cpp
    │   │   ├── metavar_equality_stmt.cpp
    │   │   ├── metavar_equality_var.cpp
    │   │   ├── metavar_stmt.cpp
    │   │   ├── misc_const.cpp
    │   │   ├── misc_const.sgrep
    │   │   ├── misc_include.cpp
    │   │   ├── misc_include.sgrep
    │   │   ├── misc_thread_local.cpp
    │   │   ├── misc_thread_local.sgrep
    │   │   ├── named_ellipsis.cpp
    │   │   ├── named_ellipsis.sgrep
    │   │   ├── parsing_pfff_only
    │   │   │   └── dotstar.cpp
    │   │   ├── parsing_todo_tree_sitter
    │   │   │   ├── could_not_find_case.cpp
    │   │   │   ├── non_recoverable1.cpp
    │   │   │   └── single_name_simple_var.cpp
    │   │   ├── regexp_string.cpp
    │   │   ├── standalone_expr.cpp
    │   │   ├── standalone_expr.sgrep
    │   │   ├── toplevel_ellipsis.cpp
    │   │   ├── toplevel_ellipsis.sgrep
    │   │   ├── typed_metavar.cpp
    │   │   └── typed_metavar.sgrep
    │   ├── csharp
    │   │   ├── anonymous_metavar.cs
    │   │   ├── concrete_syntax.cs
    │   │   ├── concrete_syntax.sgrep
    │   │   ├── decl_before_init.cs
    │   │   ├── decl_before_init.sgrep
    │   │   ├── deep_expr_operator.cs
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_exprstmt.cs
    │   │   ├── dots_args.cs
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_class.cs
    │   │   ├── dots_class.sgrep
    │   │   ├── dots_method_chaining.cs
    │   │   ├── dots_nested_stmts.cs
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_parameters.cs
    │   │   ├── dots_parameters.sgrep
    │   │   ├── dots_stmts.cs
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.cs
    │   │   ├── dots_string.sgrep
    │   │   ├── equivalence_constant_propagation.cs
    │   │   ├── equivalence_constant_propagation.sgrep
    │   │   ├── loops.cs
    │   │   ├── loops.sgrep
    │   │   ├── metavar_anno.cs
    │   │   ├── metavar_anno.sgrep
    │   │   ├── metavar_arg.cs
    │   │   ├── metavar_arg.sgrep
    │   │   ├── metavar_call.cs
    │   │   ├── metavar_class_def.cs
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_cond.cs
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.cs
    │   │   ├── metavar_ellipsis_new_args.cs
    │   │   ├── metavar_ellipsis_new_args.sgrep
    │   │   ├── metavar_equality_expr.cs
    │   │   ├── metavar_equality_expr.sgrep
    │   │   ├── metavar_equality_stmt.cs
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.cs
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.cs
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.cs
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_key_value.cs
    │   │   ├── metavar_key_value.sgrep
    │   │   ├── metavar_stmt.cs
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_typed.cs
    │   │   ├── metavar_typed.sgrep
    │   │   ├── misc_enum_pattern.cs
    │   │   ├── misc_enum_pattern.sgrep
    │   │   ├── todo
    │   │   │   ├── misc_linq.cs
    │   │   │   └── misc_linq.sgrep
    │   │   ├── toplevel_ellipsis.cs
    │   │   └── toplevel_ellipsis.sgrep
    │   ├── dart
    │   │   ├── anonymous_metavar.dart
    │   │   ├── concrete_syntax.dart
    │   │   ├── deep_expr_operator.dart
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_exprstmt.dart
    │   │   ├── dots_args.dart
    │   │   ├── dots_expr.dart
    │   │   ├── metavar_arg.dart
    │   │   ├── metavar_call.dart
    │   │   └── metavar_stmt.dart
    │   ├── dockerfile
    │   │   ├── add-chown.dockerfile
    │   │   ├── add-chown.sgrep
    │   │   ├── add.dockerfile
    │   │   ├── add.sgrep
    │   │   ├── anonymous_metavar.dockerfile
    │   │   ├── arg-default-metavar.dockerfile
    │   │   ├── arg-default-metavar.sgrep
    │   │   ├── arg-metavar.dockerfile
    │   │   ├── arg-metavar.sgrep
    │   │   ├── arg.dockerfile
    │   │   ├── arg.sgrep
    │   │   ├── array-ellipsis.dockerfile
    │   │   ├── array-ellipsis.sgrep
    │   │   ├── array-metavariable.dockerfile
    │   │   ├── array-metavariable.sgrep
    │   │   ├── cmd-argv.dockerfile
    │   │   ├── cmd-argv.sgrep
    │   │   ├── cmd-ellipsis.dockerfile
    │   │   ├── cmd-ellipsis.sgrep
    │   │   ├── cmd-named-ellipsis.dockerfile
    │   │   ├── cmd-named-ellipsis.sgrep
    │   │   ├── cmd-shell.dockerfile
    │   │   ├── cmd-shell.sgrep
    │   │   ├── concrete_syntax.dockerfile
    │   │   ├── concrete_syntax.sgrep
    │   │   ├── copy-chown.dockerfile
    │   │   ├── copy-chown.sgrep
    │   │   ├── copy-ellipsis.dockerfile
    │   │   ├── copy-ellipsis.sgrep
    │   │   ├── copy-metavar.dockerfile
    │   │   ├── copy-metavar.sgrep
    │   │   ├── copy-multiple-files.dockerfile
    │   │   ├── copy-multiple-files.sgrep
    │   │   ├── copy-param.dockerfile
    │   │   ├── copy-param.sgrep
    │   │   ├── copy.dockerfile
    │   │   ├── copy.sgrep
    │   │   ├── deep_exprstmt.TODO
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── dots_args.dockerfile
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_nested_stmts.dockerfile
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.dockefile
    │   │   ├── dots_stmts.dockerfile
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.dockerfile
    │   │   ├── dots_string.sgrep
    │   │   ├── entrypoint-ellipsis.dockerfile
    │   │   ├── entrypoint-ellipsis.sgrep
    │   │   ├── entrypoint-named-ellipsis.dockerfile
    │   │   ├── entrypoint-named-ellipsis.sgrep
    │   │   ├── entrypoint.dockerfile
    │   │   ├── entrypoint.sgrep
    │   │   ├── env-const-prop.dockerfile
    │   │   ├── env-const-prop.sgrep
    │   │   ├── env-ellipsis.dockerfile
    │   │   ├── env-ellipsis.sgrep
    │   │   ├── env-key-one-char.dockerfile
    │   │   ├── env-key-one-char.sgrep
    │   │   ├── env-val-metavar.dockerfile
    │   │   ├── env-val-metavar.sgrep
    │   │   ├── env.dockerfile
    │   │   ├── env.sgrep
    │   │   ├── expose-ellipsis.dockerfile
    │   │   ├── expose-ellipsis.sgrep
    │   │   ├── expose-metavar.dockerfile
    │   │   ├── expose-metavar.sgrep
    │   │   ├── expose.dockerfile
    │   │   ├── expose.sgrep
    │   │   ├── from-alias-reuse.dockerfile
    │   │   ├── from-alias-reuse.sgrep
    │   │   ├── from-as.dockerfile
    │   │   ├── from-as.sgrep
    │   │   ├── from-digest-metavar.dockerfile
    │   │   ├── from-digest-metavar.sgrep
    │   │   ├── from-param.dockerfile
    │   │   ├── from-param.sgrep
    │   │   ├── from-tag-metavar.dockerfile
    │   │   ├── from-tag-metavar.sgrep
    │   │   ├── from.dockerfile
    │   │   ├── from.sgrep
    │   │   ├── from2.dockerfile
    │   │   ├── from2.sgrep
    │   │   ├── healthcheck-ellipsis.dockerfile
    │   │   ├── healthcheck-ellipsis.sgrep
    │   │   ├── healthcheck-metavar.dockerfile
    │   │   ├── healthcheck-metavar.sgrep
    │   │   ├── healthcheck-none.dockerfile
    │   │   ├── healthcheck-none.sgrep
    │   │   ├── healthcheck-options-cmd-ellipsis.dockerfile
    │   │   ├── healthcheck-options-cmd-ellipsis.sgrep
    │   │   ├── healthcheck-options-ellipsis.dockerfile
    │   │   ├── healthcheck-options-ellipsis.sgrep
    │   │   ├── healthcheck-options.dockerfile
    │   │   ├── healthcheck-options.sgrep
    │   │   ├── healthcheck.dockerfile
    │   │   ├── healthcheck.sgrep
    │   │   ├── instruction-ellipsis.dockerfile
    │   │   ├── instruction-ellipsis.sgrep
    │   │   ├── instruction-metavariable.dockerfile
    │   │   ├── instruction-metavariable.sgrep
    │   │   ├── label-ellipsis.dockerfile
    │   │   ├── label-ellipsis.sgrep
    │   │   ├── label-metavar.dockerfile
    │   │   ├── label-metavar.sgrep
    │   │   ├── label-variable-key.dockerfile
    │   │   ├── label-variable-key.sgrep
    │   │   ├── label.dockerfile
    │   │   ├── label.sgrep
    │   │   ├── maintainer-metavar.dockerfile
    │   │   ├── maintainer-metavar.sgrep
    │   │   ├── maintainer.dockerfile
    │   │   ├── maintainer.sgrep
    │   │   ├── metavar-backref.dockerfile
    │   │   ├── metavar-backref.sgrep
    │   │   ├── metavar_arg.dockerfile
    │   │   ├── metavar_arg.sgrep
    │   │   ├── metavar_call.dockerfile
    │   │   ├── metavar_call.sgrep
    │   │   ├── metavar_equality_var.dockerfile
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── multiline_comment.dockerfile
    │   │   ├── multiline_comment.sgrep
    │   │   ├── no-trailing-newline.dockerfile
    │   │   ├── no-trailing-newline.sgrep
    │   │   ├── onbuild.dockerfile
    │   │   ├── onbuild.sgrep
    │   │   ├── run-anchored.dockerfile
    │   │   ├── run-anchored.sgrep
    │   │   ├── run-argv.dockerfile
    │   │   ├── run-argv.sgrep
    │   │   ├── run-param-metavar.dockerfile
    │   │   ├── run-param-metavar.sgrep
    │   │   ├── run-param-mount-metavar.dockerfile
    │   │   ├── run-param-mount-metavar.sgrep
    │   │   ├── run-param.dockerfile
    │   │   ├── run-param.sgrep
    │   │   ├── run.dockerfile
    │   │   ├── run.sgrep
    │   │   ├── shell.dockerfile
    │   │   ├── shell.sgrep
    │   │   ├── stopsignal-metavar.dockerfile
    │   │   ├── stopsignal-metavar.sgrep
    │   │   ├── stopsignal.dockerfile
    │   │   ├── stopsignal.sgrep
    │   │   ├── string-comparison.dockerfile
    │   │   ├── string-comparison.sgrep
    │   │   ├── strings.dockerfile
    │   │   ├── strings.sgrep
    │   │   ├── todo
    │   │   │   ├── env-key-metavar.dockerfile
    │   │   │   ├── env-key-metavar.sgrep
    │   │   │   ├── string-fragments.dockerfile
    │   │   │   └── string-fragments.sgrep
    │   │   ├── user-group-expansion.dockerfile
    │   │   ├── user-group-expansion.sgrep
    │   │   ├── user-group-metavar.dockerfile
    │   │   ├── user-group-metavar.sgrep
    │   │   ├── user-group.dockerfile
    │   │   ├── user-group.sgrep
    │   │   ├── user.dockerfile
    │   │   ├── user.sgrep
    │   │   ├── volume-ellipsis.dockerfile
    │   │   ├── volume-ellipsis.sgrep
    │   │   ├── volume-metavar.dockerfile
    │   │   ├── volume-metavar.sgrep
    │   │   ├── volume.dockerfile
    │   │   ├── volume.sgrep
    │   │   ├── workdir-metavar.dockerfile
    │   │   ├── workdir-metavar.sgrep
    │   │   ├── workdir.dockerfile
    │   │   └── workdir.sgrep
    │   ├── generic
    │   │   ├── concrete_syntax.generic
    │   │   ├── dots_args.generic
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_expr.generic
    │   │   ├── dots_stmts.generic
    │   │   ├── dots_string.generic
    │   │   ├── dots_string.sgrep
    │   │   ├── metavar_call.generic
    │   │   ├── metavar_equality_var.generic
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_stmt.generic
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── minified.generic
    │   │   ├── minified.sgrep
    │   │   ├── misc_else_blocks_brace.generic
    │   │   ├── misc_else_blocks_brace.sgrep
    │   │   ├── misc_else_blocks_no_brace.generic
    │   │   ├── misc_else_blocks_no_brace.sgrep
    │   │   ├── misc_if_blocks_brace.generic
    │   │   ├── misc_if_blocks_brace.sgrep
    │   │   ├── misc_if_blocks_no_brace.generic
    │   │   ├── misc_if_blocks_no_brace.sgrep
    │   │   ├── not-minified.generic
    │   │   └── not-minified.sgrep
    │   ├── go
    │   │   ├── aliasing.TODO
    │   │   ├── anonymous_metavar.go
    │   │   ├── concrete_syntax.go
    │   │   ├── cp_ref.go
    │   │   ├── cp_ref.sgrep
    │   │   ├── cp_shortassign.go
    │   │   ├── cp_shortassign.sgrep
    │   │   ├── deep_cond.go
    │   │   ├── deep_cond.sgrep
    │   │   ├── deep_expr_lambda.go
    │   │   ├── deep_expr_lambda.sgrep
    │   │   ├── deep_expr_operator.go
    │   │   ├── deep_exprstmt.go
    │   │   ├── dots_args.go
    │   │   ├── dots_attributes.go
    │   │   ├── dots_attributes.sgrep
    │   │   ├── dots_expr.go
    │   │   ├── dots_for.go
    │   │   ├── dots_for.sgrep
    │   │   ├── dots_function_type.go
    │   │   ├── dots_function_type.sgrep
    │   │   ├── dots_import.go
    │   │   ├── dots_import.sgrep
    │   │   ├── dots_method_chaining.go
    │   │   ├── dots_nested_stmts.go
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_newargs.go
    │   │   ├── dots_newargs.sgrep
    │   │   ├── dots_package.go
    │   │   ├── dots_package.sgrep
    │   │   ├── dots_params.go
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_select_cases.go
    │   │   ├── dots_select_cases.sgrep
    │   │   ├── dots_stmts.go
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_stmts2.go
    │   │   ├── dots_stmts2.newline.go
    │   │   ├── dots_stmts2.newline.sgrep
    │   │   ├── dots_stmts2.sgrep
    │   │   ├── dots_stmts3.go
    │   │   ├── dots_stmts3.sgrep
    │   │   ├── dots_string.go
    │   │   ├── dots_struct_fields.TODO
    │   │   ├── dots_struct_fields.go.TODO
    │   │   ├── dots_struct_order.go
    │   │   ├── dots_struct_order.sgrep
    │   │   ├── dots_switch_cases.go
    │   │   ├── dots_switch_cases.sgrep
    │   │   ├── dots_type_tuple.go
    │   │   ├── dots_type_tuple.sgrep
    │   │   ├── equivalence_constant_dataflow.go.TODO
    │   │   ├── equivalence_constant_dataflow.sgrep.TODO
    │   │   ├── equivalence_constant_propagation.go
    │   │   ├── equivalence_interpolated_str.go
    │   │   ├── equivalence_interpolated_str.sgrep
    │   │   ├── equivalence_naming_import.go
    │   │   ├── equivalence_naming_import.sgrep
    │   │   ├── equivalence_naming_import1.go
    │   │   ├── equivalence_naming_import1.sgrep
    │   │   ├── equivalence_naming_import2.go
    │   │   ├── equivalence_naming_import2.sgrep
    │   │   ├── import_metavar.go
    │   │   ├── import_metavar.sgrep
    │   │   ├── import_metavar2.go
    │   │   ├── import_metavar2.sgrep
    │   │   ├── imports.go
    │   │   ├── imports.sgrep
    │   │   ├── imports2.sgrep
    │   │   ├── imports3.sgrep
    │   │   ├── imports_metavar.go
    │   │   ├── imports_metavar.sgrep
    │   │   ├── imports_prefix.go
    │   │   ├── imports_prefix.sgrep
    │   │   ├── interface_type_assertion.go
    │   │   ├── interface_type_assertion.sgrep
    │   │   ├── make-args-trans.go
    │   │   ├── make-args-trans.sgrep
    │   │   ├── make_ellipsis_firstarg.go
    │   │   ├── make_ellipsis_firstarg.sgrep
    │   │   ├── make_metavar_firstarg.go
    │   │   ├── make_metavar_firstarg.sgrep
    │   │   ├── make_tri_pat.go
    │   │   ├── make_tri_pat.sgrep
    │   │   ├── metavar-typing-structs-and-new.go
    │   │   ├── metavar-typing-structs-and-new.sgrep
    │   │   ├── metavar_arg.go
    │   │   ├── metavar_call.go
    │   │   ├── metavar_cond.go
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.go
    │   │   ├── metavar_ellipsis_stmts.go
    │   │   ├── metavar_ellipsis_stmts.sgrep
    │   │   ├── metavar_equality_expr.go
    │   │   ├── metavar_equality_stmt.go
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.go
    │   │   ├── metavar_equality_vardef_vs_use.go
    │   │   ├── metavar_equality_vardef_vs_use.sgrep
    │   │   ├── metavar_expr.go
    │   │   ├── metavar_expr.sgrep
    │   │   ├── metavar_func_def.go
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.go.TODO
    │   │   ├── metavar_import.sgrep.TODO
    │   │   ├── metavar_key_value.go
    │   │   ├── metavar_key_value.sgrep
    │   │   ├── metavar_package.go
    │   │   ├── metavar_package.sgrep
    │   │   ├── metavar_stmt.TODO
    │   │   ├── metavar_stmt.go
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_type.go
    │   │   ├── metavar_type.sgrep
    │   │   ├── metavar_typed.go
    │   │   ├── metavar_typed.sgrep
    │   │   ├── metavar_typed_args.go
    │   │   ├── metavar_typed_args.sgrep
    │   │   ├── metavar_typed_fieldaccess.go.TODO
    │   │   ├── metavar_typed_fieldaccess.sgrep.TODO
    │   │   ├── metavar_typed_lefthand.go
    │   │   ├── metavar_typed_lefthand.sgrep
    │   │   ├── metavar_typed_literal.go
    │   │   ├── metavar_typed_literal.sgrep
    │   │   ├── metavar_typed_struct.go
    │   │   ├── metavar_typed_struct.sgrep
    │   │   ├── misc_assignop.go
    │   │   ├── misc_assignop.sgrep
    │   │   ├── misc_cast_autofix.go
    │   │   ├── misc_cast_autofix.sgrep
    │   │   ├── misc_compositelit.go
    │   │   ├── misc_compositelit.sgrep
    │   │   ├── misc_diff_pfff_treesitter.go
    │   │   ├── misc_diff_pfff_treesitter.sgrep
    │   │   ├── misc_empty_body.go
    │   │   ├── misc_empty_body.sgrep
    │   │   ├── misc_exprstmt_vs_expr.go
    │   │   ├── misc_exprstmt_vs_expr.sgrep
    │   │   ├── misc_functype_0arg.go
    │   │   ├── misc_functype_0arg.sgrep
    │   │   ├── misc_functype_0arg_bis.go
    │   │   ├── misc_functype_0arg_bis.sgrep
    │   │   ├── misc_hidden_empty.go
    │   │   ├── misc_hidden_empty.sgrep
    │   │   ├── misc_hidden_empty2.go
    │   │   ├── misc_hidden_empty2.sgrep
    │   │   ├── misc_import.go
    │   │   ├── misc_import.sgrep
    │   │   ├── misc_import_order.go
    │   │   ├── misc_import_order.sgrep
    │   │   ├── misc_initkey.go
    │   │   ├── misc_initkey.sgrep
    │   │   ├── misc_interface_method.go
    │   │   ├── misc_interface_method.sgrep
    │   │   ├── misc_noteq.go
    │   │   ├── misc_noteq.sgrep
    │   │   ├── misc_package.go
    │   │   ├── misc_package.sgrep
    │   │   ├── misc_ref_new.go
    │   │   ├── misc_ref_new.sgrep
    │   │   ├── misc_regression1.go
    │   │   ├── misc_regression1.sgrep
    │   │   ├── misc_tuple_order.go
    │   │   ├── misc_tuple_order.sgrep
    │   │   ├── misc_type_decl.go
    │   │   ├── misc_type_decl.sgrep
    │   │   ├── multiple_metavars.go
    │   │   ├── multiple_metavars.sgrep
    │   │   ├── package_metavar.go
    │   │   ├── package_metavar.sgrep
    │   │   ├── partial_function.go
    │   │   ├── partial_function.sgrep
    │   │   ├── partial_initbraces.go
    │   │   ├── partial_initbraces.sgrep
    │   │   ├── partial_single_field.go
    │   │   ├── partial_single_field.sgrep
    │   │   ├── partial_single_field2.go
    │   │   ├── partial_single_field2.sgrep
    │   │   ├── regexp_caret.go
    │   │   ├── regexp_caret.sgrep
    │   │   ├── regexp_import.go
    │   │   ├── regexp_import.sgrep
    │   │   ├── regexp_string.go
    │   │   ├── shortassign.go
    │   │   ├── shortassign.sgrep
    │   │   ├── string_literals.go
    │   │   ├── string_literals.sgrep
    │   │   ├── struct_tags.go
    │   │   ├── struct_tags.sgrep
    │   │   ├── struct_tags_one.go
    │   │   ├── struct_tags_one.sgrep
    │   │   ├── todo
    │   │   │   └── imports3.go
    │   │   ├── typing-make.go
    │   │   └── typing-make.sgrep
    │   ├── hack
    │   │   ├── TODO
    │   │   │   ├── equivalence_constant_propagation.hack
    │   │   │   ├── equivalence_constant_propagation.sgrep
    │   │   │   ├── equivalence_eq.hack
    │   │   │   ├── equivalence_eq.sgrep
    │   │   │   ├── equivalence_naming_import.hack
    │   │   │   └── equivalence_naming_import.sgrep
    │   │   ├── anonymous_metavar.hack
    │   │   ├── concrete_syntax.hack
    │   │   ├── deep_expr_operator.hack
    │   │   ├── deep_exprstmt.hack
    │   │   ├── dots_args.hack
    │   │   ├── dots_class_def.hack
    │   │   ├── dots_class_def.sgrep
    │   │   ├── dots_func_def.hack
    │   │   ├── dots_func_def.sgrep
    │   │   ├── dots_method_chaining.hack
    │   │   ├── dots_method_chaining.sgrep
    │   │   ├── dots_nested_stmts.hack
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_params.hack
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_stmts.hack
    │   │   ├── dots_string.hack
    │   │   ├── metavar_anno_class.hack
    │   │   ├── metavar_anno_class.sgrep
    │   │   ├── metavar_arg.hack
    │   │   ├── metavar_call.hack
    │   │   ├── metavar_class_def.hack
    │   │   ├── metavar_cond.hack
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.hack
    │   │   ├── metavar_equality_expr.hack
    │   │   ├── metavar_equality_stmt.hack
    │   │   ├── metavar_equality_var.hack
    │   │   ├── metavar_func_def.hack
    │   │   ├── metavar_import.hack
    │   │   ├── metavar_import.sgrep
    │   │   └── metavar_stmt.hack
    │   ├── html
    │   │   ├── anonymous_metavar.html
    │   │   ├── anonymous_metavar.sgrep
    │   │   ├── metavar_attr_value.html
    │   │   ├── metavar_attr_value.sgrep
    │   │   ├── metavar_ellipsis_xmls.html
    │   │   ├── metavar_ellipsis_xmls.sgrep
    │   │   ├── metavar_tag.html
    │   │   ├── metavar_tag.sgrep
    │   │   ├── misc_many_features.html
    │   │   └── misc_many_features.sgrep
    │   ├── java
    │   │   ├── aliasing.TODO
    │   │   ├── aliasing_and_direct2.java
    │   │   ├── aliasing_and_direct2.sgrep
    │   │   ├── aliasing_qualified.java
    │   │   ├── aliasing_qualified.sgrep
    │   │   ├── aliasing_type.java
    │   │   ├── aliasing_type.sgrep
    │   │   ├── anonymous_metavar.java
    │   │   ├── better_import1.java
    │   │   ├── better_import1.sgrep
    │   │   ├── better_import2.java
    │   │   ├── better_import2.sgrep
    │   │   ├── better_import3.java
    │   │   ├── better_import3.sgrep
    │   │   ├── better_import4.java
    │   │   ├── better_import4.sgrep
    │   │   ├── boxing_equivalences_boolean.java
    │   │   ├── boxing_equivalences_boolean.sgrep
    │   │   ├── boxing_equivalences_boxed_boolean.java
    │   │   ├── boxing_equivalences_boxed_boolean.sgrep
    │   │   ├── boxing_equivalences_int.java
    │   │   ├── boxing_equivalences_int.sgrep
    │   │   ├── boxing_equivalences_integer.java
    │   │   ├── boxing_equivalences_integer.sgrep
    │   │   ├── boxing_equivalences_resolved_boolean.java
    │   │   ├── boxing_equivalences_resolved_boolean.sgrep
    │   │   ├── boxing_equivalences_resolved_integer.java
    │   │   ├── boxing_equivalences_resolved_integer.sgrep
    │   │   ├── boxing_equivalences_resolved_string.java
    │   │   ├── boxing_equivalences_resolved_string.sgrep
    │   │   ├── boxing_equivalences_string.java
    │   │   ├── boxing_equivalences_string.sgrep
    │   │   ├── concrete_syntax.java
    │   │   ├── cp_foreach.java
    │   │   ├── cp_foreach.sgrep
    │   │   ├── cp_is_must_analysis.java
    │   │   ├── cp_is_must_analysis.sgrep
    │   │   ├── cp_is_must_analysis1.java
    │   │   ├── cp_is_must_analysis1.sgrep
    │   │   ├── cp_is_must_analysis2.java
    │   │   ├── cp_is_must_analysis2.sgrep
    │   │   ├── cp_string_format.java
    │   │   ├── cp_string_format.sgrep
    │   │   ├── cp_switch_throw.java
    │   │   ├── cp_switch_throw.sgrep
    │   │   ├── cp_synchronized.java
    │   │   ├── cp_synchronized.sgrep
    │   │   ├── cp_synchronized1.java
    │   │   ├── cp_synchronized1.sgrep
    │   │   ├── cp_try_return.java
    │   │   ├── cp_try_return.sgrep
    │   │   ├── deep_cond.java
    │   │   ├── deep_cond.sgrep
    │   │   ├── deep_expr_operator.java
    │   │   ├── deep_exprstmt.java
    │   │   ├── dots_annotations.java
    │   │   ├── dots_annotations.sgrep
    │   │   ├── dots_annotations_brackets.java
    │   │   ├── dots_annotations_brackets.sgrep
    │   │   ├── dots_args.java
    │   │   ├── dots_attribute.java
    │   │   ├── dots_attribute.sgrep
    │   │   ├── dots_catch.java
    │   │   ├── dots_catch.sgrep
    │   │   ├── dots_enum.java
    │   │   ├── dots_enum.sgrep
    │   │   ├── dots_expr.java
    │   │   ├── dots_for.java
    │   │   ├── dots_generics.java
    │   │   ├── dots_generics.sgrep
    │   │   ├── dots_generics2.java
    │   │   ├── dots_generics2.sgrep
    │   │   ├── dots_import.java
    │   │   ├── dots_import.sgrep
    │   │   ├── dots_interface.java
    │   │   ├── dots_interface.sgrep
    │   │   ├── dots_method_chaining.java
    │   │   ├── dots_method_chaining2.java
    │   │   ├── dots_method_chaining2.sgrep
    │   │   ├── dots_method_chaining3.java
    │   │   ├── dots_method_chaining3.sgrep
    │   │   ├── dots_method_chaining_simple.java
    │   │   ├── dots_method_chaining_simple.sgrep
    │   │   ├── dots_nested_stmts.java
    │   │   ├── dots_params.java
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_stmts.java
    │   │   ├── dots_string.java
    │   │   ├── dots_vardef.java
    │   │   ├── dots_vardef.sgrep
    │   │   ├── equivalence_constant_propagation.java
    │   │   ├── equivalence_constant_propagation.sgrep
    │   │   ├── equivalence_constant_propagation2.java
    │   │   ├── equivalence_constant_propagation2.sgrep
    │   │   ├── equivalence_constant_propagation_field.java
    │   │   ├── equivalence_constant_propagation_field.sgrep
    │   │   ├── errors
    │   │   │   ├── record_and_accents.java
    │   │   │   ├── recoverable_error1.java
    │   │   │   └── unrecoverable_error1.java
    │   │   ├── generics_args.java
    │   │   ├── generics_args.sgrep
    │   │   ├── id_qualified.java
    │   │   ├── id_qualified.sgrep
    │   │   ├── import_metavar_fullpath.java
    │   │   ├── import_metavar_fullpath.sgrep
    │   │   ├── less_generics.java
    │   │   ├── less_generics.sgrep
    │   │   ├── less_inheritance.java
    │   │   ├── less_inheritance.sgrep
    │   │   ├── metavar_anno.java
    │   │   ├── metavar_arg.java
    │   │   ├── metavar_as_type.java
    │   │   ├── metavar_as_type.sgrep
    │   │   ├── metavar_call.java
    │   │   ├── metavar_class_def.java
    │   │   ├── metavar_class_type.java
    │   │   ├── metavar_class_type.sgrep
    │   │   ├── metavar_cond.java
    │   │   ├── metavar_ellipsis_args.java
    │   │   ├── metavar_ellipsis_params.java
    │   │   ├── metavar_ellipsis_params.sgrep
    │   │   ├── metavar_equality_expr.java
    │   │   ├── metavar_equality_field_vs_use.java
    │   │   ├── metavar_equality_field_vs_use.sgrep
    │   │   ├── metavar_equality_stmt.java
    │   │   ├── metavar_equality_var.java
    │   │   ├── metavar_func_anno.java
    │   │   ├── metavar_func_anno.sgrep
    │   │   ├── metavar_func_def.java
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_idspecial.java
    │   │   ├── metavar_idspecial.sgrep
    │   │   ├── metavar_import.java
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_name.java
    │   │   ├── metavar_name.sgrep
    │   │   ├── metavar_package.java
    │   │   ├── metavar_package.sgrep
    │   │   ├── metavar_qualified_id.java
    │   │   ├── metavar_qualified_id.sgrep
    │   │   ├── metavar_stmt.java
    │   │   ├── metavar_typed.java
    │   │   ├── metavar_typed.sgrep
    │   │   ├── metavar_typed_args.java
    │   │   ├── metavar_typed_args.sgrep
    │   │   ├── metavar_typed_bool.java
    │   │   ├── metavar_typed_bool.sgrep
    │   │   ├── metavar_typed_classfield.java
    │   │   ├── metavar_typed_classfield.sgrep
    │   │   ├── metavar_typed_dot_method.java
    │   │   ├── metavar_typed_dot_method.sgrep
    │   │   ├── metavar_typed_field.java
    │   │   ├── metavar_typed_field.sgrep
    │   │   ├── metavar_typed_fieldaccess.java.TODO
    │   │   ├── metavar_typed_fieldaccess.sgrep.TODO
    │   │   ├── metavar_typed_function.java
    │   │   ├── metavar_typed_function.sgrep
    │   │   ├── metavar_typed_if_statement.java
    │   │   ├── metavar_typed_if_statement.sgrep
    │   │   ├── metavar_typed_int.java
    │   │   ├── metavar_typed_int.sgrep
    │   │   ├── metavar_typed_lefthand.java
    │   │   ├── metavar_typed_lefthand.sgrep
    │   │   ├── metavar_typed_localvar.java
    │   │   ├── metavar_typed_localvar.sgrep
    │   │   ├── metavar_typed_methodcall.java
    │   │   ├── metavar_typed_methodcall.sgrep
    │   │   ├── metavar_typed_new.java
    │   │   ├── metavar_typed_new.sgrep
    │   │   ├── metavar_typed_qualified.java
    │   │   ├── metavar_typed_qualified.sgrep
    │   │   ├── metavar_typed_with_metavar.java
    │   │   ├── metavar_typed_with_metavar.sgrep
    │   │   ├── misc_accent_record.java
    │   │   ├── misc_accent_record.sgrep
    │   │   ├── misc_annot.java
    │   │   ├── misc_annot.sgrep
    │   │   ├── misc_assert.java
    │   │   ├── misc_assert.sgrep
    │   │   ├── misc_at_interface.java
    │   │   ├── misc_at_interface.sgrep
    │   │   ├── misc_at_interface2.java
    │   │   ├── misc_at_interface2.sgrep
    │   │   ├── misc_brace_semi.java
    │   │   ├── misc_brace_semi.sgrep
    │   │   ├── misc_class_literal.java
    │   │   ├── misc_class_literal.sgrep
    │   │   ├── misc_constructor.java
    │   │   ├── misc_constructor.sgrep
    │   │   ├── misc_constructor_public.java
    │   │   ├── misc_constructor_public.sgrep
    │   │   ├── misc_def_to_assign.java
    │   │   ├── misc_def_to_assign.sgrep
    │   │   ├── misc_generic.java
    │   │   ├── misc_generic.sgrep
    │   │   ├── misc_import_resolve.java
    │   │   ├── misc_import_resolve.sgrep
    │   │   ├── misc_import_resolve_unqualified.java
    │   │   ├── misc_import_resolve_unqualified.sgrep
    │   │   ├── misc_import_static.java
    │   │   ├── misc_import_static.sgrep
    │   │   ├── misc_instance_call.java
    │   │   ├── misc_instance_call.sgrep
    │   │   ├── misc_precedence.java
    │   │   ├── misc_precedence.sgrep
    │   │   ├── misc_record_pattern.java
    │   │   ├── misc_record_pattern.sgrep
    │   │   ├── misc_static_block.java
    │   │   ├── misc_static_block.sgrep
    │   │   ├── misc_super_call.java
    │   │   ├── misc_super_call.sgrep
    │   │   ├── misc_switch_e.java
    │   │   ├── misc_switch_e.sgrep
    │   │   ├── misc_token_cast.java
    │   │   ├── misc_token_cast.sgrep
    │   │   ├── misc_varargs.java
    │   │   ├── misc_varargs.sgrep
    │   │   ├── named_ellipsis_param.java
    │   │   ├── named_ellipsis_param.sgrep
    │   │   ├── named_ellipsis_stmt.java
    │   │   ├── named_ellipsis_stmt.sgrep
    │   │   ├── parameterized_type.java
    │   │   ├── parameterized_type.sgrep
    │   │   ├── partial_finally.java
    │   │   ├── partial_method.java
    │   │   ├── partial_method.sgrep
    │   │   ├── partial_try.java
    │   │   ├── perf_fields.java
    │   │   ├── perf_fields.sgrep
    │   │   ├── regexp_case_insensitive.java
    │   │   ├── regexp_pcre.java
    │   │   ├── regexp_string.java
    │   │   ├── statement_list.java
    │   │   ├── statement_list.sgrep
    │   │   ├── stmts_to_fields.java
    │   │   ├── stmts_to_fields.sgrep
    │   │   ├── try_mutli_resources.java
    │   │   ├── try_mutli_resources.sgrep
    │   │   ├── try_resources.java
    │   │   ├── try_resources.sgrep
    │   │   ├── typed_metavar_class.java
    │   │   ├── typed_metavar_class.sgrep
    │   │   ├── typed_metavar_foreach.java
    │   │   ├── typed_metavar_foreach.sgrep
    │   │   ├── typed_metavar_ternary.java
    │   │   ├── typed_metavar_ternary.sgrep
    │   │   ├── typed_metavar_var.java
    │   │   ├── typed_metavar_var.sgrep
    │   │   ├── unordered_implement.java
    │   │   ├── unordered_implement.sgrep
    │   │   ├── visit_attribute.java
    │   │   └── visit_attribute.sgrep
    │   ├── js
    │   │   ├── ac_matching_bitor.js
    │   │   ├── ac_matching_bitor.sgrep
    │   │   ├── aliasing.TODO
    │   │   ├── aliasing_require.js
    │   │   ├── aliasing_require.sgrep
    │   │   ├── anonymous_metavar.js
    │   │   ├── caching_deep.js
    │   │   ├── caching_deep.sgrep
    │   │   ├── caching_deep_metavar.js
    │   │   ├── caching_deep_metavar.sgrep
    │   │   ├── caching_different_depth.js
    │   │   ├── caching_different_depth.sgrep
    │   │   ├── caching_flat.js
    │   │   ├── caching_flat.sgrep
    │   │   ├── caching_nested.js
    │   │   ├── caching_nested.sgrep
    │   │   ├── concrete_syntax.js
    │   │   ├── cp_array_destructure.js
    │   │   ├── cp_array_destructure.sgrep
    │   │   ├── cp_conditional.js
    │   │   ├── cp_conditional.sgrep
    │   │   ├── cp_dataflow.js
    │   │   ├── cp_dataflow.sgrep
    │   │   ├── cp_implicit_conversion.js
    │   │   ├── cp_implicit_conversion.sgrep
    │   │   ├── cp_incrdecr.js
    │   │   ├── cp_incrdecr.sgrep
    │   │   ├── cp_label.js
    │   │   ├── cp_label.sgrep
    │   │   ├── cp_throw.js
    │   │   ├── cp_throw.sgrep
    │   │   ├── cp_undeclared.js
    │   │   ├── cp_undeclared.sgrep
    │   │   ├── cp_undeclared1.js
    │   │   ├── cp_undeclared1.sgrep
    │   │   ├── deep_cond.js
    │   │   ├── deep_cond.sgrep
    │   │   ├── deep_deep_stmt1.js
    │   │   ├── deep_deep_stmt1.sgrep
    │   │   ├── deep_deep_stmt2.js
    │   │   ├── deep_deep_stmt2.sgrep
    │   │   ├── deep_deep_stmt3.js
    │   │   ├── deep_deep_stmt3.sgrep
    │   │   ├── deep_expr_and_ellipsis.js
    │   │   ├── deep_expr_and_ellipsis.sgrep
    │   │   ├── deep_expr_operator.js
    │   │   ├── deep_expr_vs_statement.js
    │   │   ├── deep_expr_vs_statement.sgrep
    │   │   ├── deep_expr_xml.js
    │   │   ├── deep_expr_xml.sgrep
    │   │   ├── deep_exprstmt.js
    │   │   ├── deep_jsx.js
    │   │   ├── deep_jsx.sgrep
    │   │   ├── deep_stmt.js
    │   │   ├── deep_stmt.sgrep
    │   │   ├── deep_stmt2.js
    │   │   ├── deep_stmt2.sgrep
    │   │   ├── deep_stmt3.js
    │   │   ├── deep_stmt3.sgrep
    │   │   ├── deep_vardef.js
    │   │   ├── deep_vardef.sgrep
    │   │   ├── dots_args.js
    │   │   ├── dots_container.js
    │   │   ├── dots_container.sgrep
    │   │   ├── dots_container2.js
    │   │   ├── dots_container2.sgrep
    │   │   ├── dots_expr.js
    │   │   ├── dots_field_chaining.js
    │   │   ├── dots_field_chaining.sgrep
    │   │   ├── dots_for.js
    │   │   ├── dots_importfrom.js
    │   │   ├── dots_importfrom.sgrep
    │   │   ├── dots_jsx_attr.js
    │   │   ├── dots_jsx_attr.sgrep
    │   │   ├── dots_jsx_attr_list.js
    │   │   ├── dots_jsx_attr_list.sgrep
    │   │   ├── dots_jsx_body.js
    │   │   ├── dots_jsx_body.sgrep
    │   │   ├── dots_jsx_body2.js
    │   │   ├── dots_jsx_body2.sgrep
    │   │   ├── dots_method_chaining.js
    │   │   ├── dots_nested_stmts.js
    │   │   ├── dots_object.js
    │   │   ├── dots_object.sgrep
    │   │   ├── dots_object2.js
    │   │   ├── dots_object2.sgrep
    │   │   ├── dots_params.js
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_pattern_record.js
    │   │   ├── dots_pattern_record.sgrep
    │   │   ├── dots_regexp.js
    │   │   ├── dots_regexp.sgrep
    │   │   ├── dots_stmts.js
    │   │   ├── dots_string.js
    │   │   ├── dots_string_no_interpolation.js
    │   │   ├── dots_string_no_interpolation.sgrep
    │   │   ├── dots_template_literals.js
    │   │   ├── dots_template_literals.sgrep
    │   │   ├── ellipsis_metavar_tagged_template.js
    │   │   ├── ellipsis_metavar_tagged_template.sgrep
    │   │   ├── ellipsis_metavar_template.js
    │   │   ├── ellipsis_metavar_template.sgrep
    │   │   ├── equivalence_aliasing_import.js
    │   │   ├── equivalence_aliasing_import.sgrep
    │   │   ├── equivalence_constant_propagation.js
    │   │   ├── equivalence_constant_propagation2.js
    │   │   ├── equivalence_constant_propagation2.sgrep
    │   │   ├── equivalence_constant_propagation3.js
    │   │   ├── equivalence_constant_propagation3.sgrep
    │   │   ├── equivalence_import_require.js
    │   │   ├── equivalence_import_require.sgrep
    │   │   ├── equivalence_import_variations.js
    │   │   ├── equivalence_import_variations.sgrep
    │   │   ├── equivalence_import_variations2.js
    │   │   ├── equivalence_import_variations2.sgrep
    │   │   ├── equivalence_import_variations3.js
    │   │   ├── equivalence_import_variations3.sgrep
    │   │   ├── equivalence_import_variations4.js
    │   │   ├── equivalence_import_variations4.sgrep
    │   │   ├── equivalence_keyword_args.js
    │   │   ├── equivalence_keyword_args.sgrep
    │   │   ├── equivalence_naming_import.TODO
    │   │   ├── equivalence_varlet.js
    │   │   ├── equivalence_varlet.sgrep
    │   │   ├── eval_call.js
    │   │   ├── eval_call.sgrep
    │   │   ├── infer_const.js
    │   │   ├── infer_const.sgrep
    │   │   ├── infer_const_1.js
    │   │   ├── infer_const_1.sgrep
    │   │   ├── infer_const_regexp.js
    │   │   ├── infer_const_regexp.sgrep
    │   │   ├── less_class_complex.js
    │   │   ├── less_class_complex.sgrep
    │   │   ├── less_class_complex_2.js
    │   │   ├── less_class_complex_2.sgrep
    │   │   ├── less_inheritance.js
    │   │   ├── less_inheritance.sgrep
    │   │   ├── less_xml_attr.js
    │   │   ├── less_xml_attr.sgrep
    │   │   ├── less_xml_body.js
    │   │   ├── less_xml_body.sgrep
    │   │   ├── metavar_anno.js
    │   │   ├── metavar_arg.js
    │   │   ├── metavar_call.js
    │   │   ├── metavar_class_def.js
    │   │   ├── metavar_class_fields.js
    │   │   ├── metavar_class_fields.sgrep
    │   │   ├── metavar_cond.js
    │   │   ├── metavar_ellipsis_args.js
    │   │   ├── metavar_equality_expr.js
    │   │   ├── metavar_equality_stmt.js
    │   │   ├── metavar_equality_var.js
    │   │   ├── metavar_equality_vardef_vs_use.js
    │   │   ├── metavar_equality_vardef_vs_use.sgrep
    │   │   ├── metavar_func_def.js
    │   │   ├── metavar_import.js
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_import2.js
    │   │   ├── metavar_import2.sgrep
    │   │   ├── metavar_import3.js
    │   │   ├── metavar_import3.sgrep
    │   │   ├── metavar_importfrom.js
    │   │   ├── metavar_importfrom.sgrep
    │   │   ├── metavar_importfrom2.js
    │   │   ├── metavar_importfrom2.sgrep
    │   │   ├── metavar_jsx_attr.js
    │   │   ├── metavar_jsx_attr.sgrep
    │   │   ├── metavar_jsx_tag.js
    │   │   ├── metavar_jsx_tag.sgrep
    │   │   ├── metavar_jsx_val.js
    │   │   ├── metavar_jsx_val.sgrep
    │   │   ├── metavar_key_value.js
    │   │   ├── metavar_regexp.js
    │   │   ├── metavar_regexp.sgrep
    │   │   ├── metavar_stmt.js
    │   │   ├── metavar_stmt_or_expr.js
    │   │   ├── metavar_stmt_or_expr.sgrep
    │   │   ├── metavar_template.js
    │   │   ├── metavar_template.sgrep
    │   │   ├── metavar_typed_bool.js
    │   │   ├── metavar_typed_bool.sgrep
    │   │   ├── metavar_typed_literal.js
    │   │   ├── metavar_typed_literal.sgrep
    │   │   ├── metavar_xml_attr.js
    │   │   ├── metavar_xml_attr.sgrep
    │   │   ├── misc_arrow.js
    │   │   ├── misc_arrow.sgrep
    │   │   ├── misc_arrow2.js
    │   │   ├── misc_arrow2.sgrep
    │   │   ├── misc_asi_pattern.js
    │   │   ├── misc_asi_pattern.sgrep
    │   │   ├── misc_catch_unbound.js
    │   │   ├── misc_catch_unbound.sgrep
    │   │   ├── misc_decorators_method.js
    │   │   ├── misc_decorators_method.sgrep
    │   │   ├── misc_deep_expr_stmt.js
    │   │   ├── misc_deep_expr_stmt.sgrep
    │   │   ├── misc_destructuring.js
    │   │   ├── misc_destructuring.sgrep
    │   │   ├── misc_destructuring3.js
    │   │   ├── misc_destructuring3.sgrep
    │   │   ├── misc_destructuring_2.js
    │   │   ├── misc_destructuring_2.sgrep
    │   │   ├── misc_else_blocks_brace.js
    │   │   ├── misc_else_blocks_no_brace.js
    │   │   ├── misc_empty_body.js
    │   │   ├── misc_empty_body.sgrep
    │   │   ├── misc_export.js
    │   │   ├── misc_export.sgrep
    │   │   ├── misc_expr_vs_vardef.js
    │   │   ├── misc_expr_vs_vardef.sgrep
    │   │   ├── misc_faketok.js
    │   │   ├── misc_faketok.sgrep
    │   │   ├── misc_field_vs_vardef.js
    │   │   ├── misc_field_vs_vardef.sgrep
    │   │   ├── misc_foreach.js
    │   │   ├── misc_foreach.sgrep
    │   │   ├── misc_foreach1.js
    │   │   ├── misc_foreach1.sgrep
    │   │   ├── misc_if_blocks_brace.js
    │   │   ├── misc_if_blocks_no_brace.js
    │   │   ├── misc_jsx.js
    │   │   ├── misc_jsx.sgrep
    │   │   ├── misc_jsx_and_obj.js
    │   │   ├── misc_jsx_and_obj.sgrep
    │   │   ├── misc_lambda.js
    │   │   ├── misc_lambda.sgrep
    │   │   ├── misc_metavar_with_digit.js
    │   │   ├── misc_metavar_with_digit.sgrep
    │   │   ├── misc_method_brace_newline.js
    │   │   ├── misc_method_brace_newline.sgrep
    │   │   ├── misc_method_chain_vs_stmt.js
    │   │   ├── misc_method_chain_vs_stmt.sgrep
    │   │   ├── misc_nested_field.js
    │   │   ├── misc_nested_field.sgrep
    │   │   ├── misc_new.js
    │   │   ├── misc_new.sgrep
    │   │   ├── misc_notoken.js
    │   │   ├── misc_notoken.sgrep
    │   │   ├── misc_null_cast.js
    │   │   ├── misc_null_cast.sgrep
    │   │   ├── misc_object_directly.js
    │   │   ├── misc_object_directly.sgrep
    │   │   ├── misc_regexp_modifier.js
    │   │   ├── misc_regexp_modifier.sgrep
    │   │   ├── misc_semicolon.js
    │   │   ├── misc_semicolon.sgrep
    │   │   ├── misc_string.js
    │   │   ├── misc_string.sgrep
    │   │   ├── misc_tagged_template_literal.js
    │   │   ├── misc_tagged_template_literal.sgrep
    │   │   ├── misc_this.js
    │   │   ├── misc_this.sgrep
    │   │   ├── misc_unicode.js
    │   │   ├── misc_unicode.sgrep
    │   │   ├── misc_yield_undefined.js
    │   │   ├── misc_yield_undefined.sgrep
    │   │   ├── object_duplicate_key.js
    │   │   ├── object_duplicate_key.sgrep
    │   │   ├── object_numeric_key.js
    │   │   ├── object_numeric_key.sgrep
    │   │   ├── partial_catch.js
    │   │   ├── partial_catch.sgrep
    │   │   ├── partial_class.js
    │   │   ├── partial_decorators_arg_method.js
    │   │   ├── partial_decorators_arg_method.sgrep
    │   │   ├── partial_decorators_method.js
    │   │   ├── partial_decorators_method.sgrep
    │   │   ├── partial_finally.js
    │   │   ├── partial_function.js
    │   │   ├── partial_function.sgrep
    │   │   ├── partial_if.js
    │   │   ├── partial_lambda_or_func.js
    │   │   ├── partial_lambda_or_func.sgrep
    │   │   ├── partial_single_field.js
    │   │   ├── partial_single_field.sgrep
    │   │   ├── partial_try.js
    │   │   ├── regexp.js
    │   │   ├── regexp.sgrep
    │   │   ├── regexp_fieldname.js
    │   │   ├── regexp_fieldname.sgrep
    │   │   ├── regexp_string.js
    │   │   ├── semgrep
    │   │   │   ├── jsx.sgrep
    │   │   │   └── metavar_jsx.sgrep
    │   │   ├── switch_case_pattern.js
    │   │   ├── switch_case_pattern.sgrep
    │   │   ├── template_string_w_metavar.js
    │   │   ├── template_string_w_metavar.sgrep
    │   │   ├── typed_metavar_assign.js
    │   │   ├── typed_metavar_assign.sgrep
    │   │   ├── unordered_destructuring.js
    │   │   ├── unordered_destructuring.sgrep
    │   │   ├── unordered_fields.js
    │   │   ├── unordered_fields.sgrep
    │   │   ├── unordered_fields2.js
    │   │   ├── unordered_fields2.sgrep
    │   │   ├── unordered_metavar.js
    │   │   ├── unordered_metavar.sgrep
    │   │   ├── unordered_xml_attr.js
    │   │   └── unordered_xml_attr.sgrep
    │   ├── json
    │   │   ├── anonymous_metavar.json
    │   │   ├── deep_expr_operator.json
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── dots_dict.json
    │   │   ├── dots_dict.sgrep
    │   │   ├── metavar_array.json
    │   │   ├── metavar_array.sgrep
    │   │   ├── metavar_field.json
    │   │   ├── metavar_field.sgrep
    │   │   ├── partial_single_field.json
    │   │   ├── partial_single_field.sgrep
    │   │   ├── partial_single_field2.json
    │   │   ├── partial_single_field2.sgrep
    │   │   ├── partial_single_field_metavar.json
    │   │   └── partial_single_field_metavar.sgrep
    │   ├── jsonnet
    │   │   ├── anonymous_metavar.jsonnet
    │   │   ├── concrete_syntax.jsonnet
    │   │   ├── deep_expr_operator.jsonnet
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── dots_args.jsonnet
    │   │   ├── dots_string.jsonnet
    │   │   ├── metavar_arg.jsonnet
    │   │   ├── metavar_call.jsonnet
    │   │   ├── metavar_equality_var.jsonnet
    │   │   └── metavar_equality_var.sgrep
    │   ├── julia
    │   │   ├── anonymous_metavar.jl
    │   │   ├── concrete_syntax.jl
    │   │   ├── deep_expr_operator.jl
    │   │   ├── deep_exprstmt.jl
    │   │   ├── do_block_metavar.jl
    │   │   ├── do_block_metavar.sgrep
    │   │   ├── dots_args.jl
    │   │   ├── dots_nested_stmts.jl
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.jl
    │   │   ├── dots_string.jl
    │   │   ├── ellipsis_catch.jl
    │   │   ├── ellipsis_catch.sgrep
    │   │   ├── empty_catch.jl
    │   │   ├── empty_catch.sgrep
    │   │   ├── implicit_return.jl
    │   │   ├── implicit_return.sgrep
    │   │   ├── implicit_return_inside_funcbody_expr.jl
    │   │   ├── implicit_return_inside_funcbody_expr.sgrep
    │   │   ├── implicit_return_inside_funcdef.jl
    │   │   ├── implicit_return_inside_funcdef.sgrep
    │   │   ├── implicit_return_inside_lambda.jl
    │   │   ├── implicit_return_inside_lambda.sgrep
    │   │   ├── import_alias.jl
    │   │   ├── import_alias.sgrep
    │   │   ├── import_import.jl
    │   │   ├── import_import.sgrep
    │   │   ├── import_metavar.jl
    │   │   ├── import_metavar.sgrep
    │   │   ├── let_ellipsis.jl
    │   │   ├── let_ellipsis.sgrep
    │   │   ├── metavar_arg.jl
    │   │   ├── metavar_call.jl
    │   │   ├── metavar_equality_var.jl
    │   │   ├── op_plus.jl
    │   │   ├── op_plus.sgrep
    │   │   ├── single_statement_block.jl
    │   │   ├── single_statement_block.sgrep
    │   │   ├── using_alias.jl
    │   │   ├── using_alias.sgrep
    │   │   ├── using_import.jl
    │   │   └── using_import.sgrep
    │   ├── kotlin
    │   │   ├── anonymous_metavar.kt
    │   │   ├── bigger_class_with_newline.kt
    │   │   ├── bigger_class_with_newline.sgrep
    │   │   ├── class_newline.kt
    │   │   ├── class_newline.sgrep
    │   │   ├── concrete_syntax.kt
    │   │   ├── deep_expr_operator.kt
    │   │   ├── deep_exprstmt.kt
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── dots_args.kt
    │   │   ├── dots_class_params.kt
    │   │   ├── dots_class_params.sgrep
    │   │   ├── dots_fields.kt
    │   │   ├── dots_fields.sgrep
    │   │   ├── dots_method_chaining.kt
    │   │   ├── dots_nested_stmts.kt
    │   │   ├── dots_params.kt
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_stmts.TODO
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.kt
    │   │   ├── in_class_const_prop.kt
    │   │   ├── in_class_const_prop.sgrep
    │   │   ├── in_class_typing.kt
    │   │   ├── in_class_typing.sgrep
    │   │   ├── interpolated_ident.kt
    │   │   ├── interpolated_ident.sgrep
    │   │   ├── metavar_arg.kt
    │   │   ├── metavar_call.kt
    │   │   ├── metavar_class_def.kt
    │   │   ├── metavar_cond.kt
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_equality_expr.kt
    │   │   ├── metavar_equality_stmt.kt
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.TODO
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.kt
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.kt
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_stmt.kt
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_typed.kt
    │   │   ├── metavar_typed.sgrep
    │   │   ├── misc_call_in_assign.kt
    │   │   ├── misc_call_in_assign.sgrep
    │   │   ├── misc_trailing_lambda1.kt
    │   │   ├── misc_trailing_lambda1.sgrep
    │   │   ├── misc_trailing_lambda2.kt
    │   │   ├── misc_trailing_lambda2.sgrep
    │   │   ├── not_string_metavar.kt
    │   │   ├── not_string_metavar.sgrep
    │   │   ├── single_interpolated_ident.kt
    │   │   ├── single_interpolated_ident.sgrep
    │   │   ├── string_metavar.kt
    │   │   ├── string_metavar.sgrep
    │   │   ├── unordered_extend.kt
    │   │   └── unordered_extend.sgrep
    │   ├── lua
    │   │   ├── anonymous_metavar.lua
    │   │   ├── assignment.lua
    │   │   ├── assignment.sgrep
    │   │   ├── comparison.lua
    │   │   ├── comparison.sgrep
    │   │   ├── concrete_syntax.lua
    │   │   ├── deep_exprstmt.lua
    │   │   ├── dots_args.lua
    │   │   ├── dots_nested_stmts.lua
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.lua
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.lua
    │   │   ├── metavar_arg.lua
    │   │   ├── metavar_call.lua
    │   │   └── metavar_equality_var.lua
    │   ├── move_on_aptos
    │   │   ├── concrete_syntax.move
    │   │   ├── deep_expr_operator.move
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_exprstmt.move
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── dots_args.move
    │   │   ├── dots_method_chaining.move
    │   │   ├── dots_nested_stmts.move
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.move
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.move
    │   │   ├── dots_string.sgrep
    │   │   ├── enum_alt_syntax.move
    │   │   ├── enum_alt_syntax.sgrep
    │   │   ├── equivalence_constant_propagation.move
    │   │   ├── equivalence_constant_propagation.sgrep
    │   │   ├── equivalence_naming_import.move
    │   │   ├── equivalence_naming_import.sgrep
    │   │   ├── metavar_anno.move
    │   │   ├── metavar_anno.sgrep
    │   │   ├── metavar_arg.move
    │   │   ├── metavar_call.move
    │   │   ├── metavar_class_def.move
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_cond.move
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.move
    │   │   ├── metavar_equality_expr.move
    │   │   ├── metavar_equality_stmt.move
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.move
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.move
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.move
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_stmt.move
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_typed.move
    │   │   ├── metavar_typed.sgrep
    │   │   ├── misc_address_value.move
    │   │   ├── misc_address_value.sgrep
    │   │   ├── misc_vector_value.move
    │   │   ├── misc_vector_value.sgrep
    │   │   ├── pattern_enum.move
    │   │   ├── pattern_enum.sgrep
    │   │   ├── struct_alt_syntax.move
    │   │   ├── struct_alt_syntax.sgrep
    │   │   ├── visibility_package.move
    │   │   └── visibility_package.sgrep
    │   ├── move_on_sui
    │   │   ├── concrete_syntax.move
    │   │   ├── deep_expr_operator.move
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_exprstmt.move
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── dots_args.move
    │   │   ├── dots_method_chaining.move
    │   │   ├── dots_nested_stmts.move
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.move
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.move
    │   │   ├── dots_string.sgrep
    │   │   ├── equivalence_constant_propagation.move
    │   │   ├── equivalence_constant_propagation.sgrep
    │   │   ├── equivalence_naming_import.move
    │   │   ├── equivalence_naming_import.sgrep
    │   │   ├── metavar_anno.move
    │   │   ├── metavar_anno.sgrep
    │   │   ├── metavar_arg.move
    │   │   ├── metavar_call.move
    │   │   ├── metavar_class_def.move
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_cond.move
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.move
    │   │   ├── metavar_equality_expr.move
    │   │   ├── metavar_equality_stmt.move
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.move
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.move
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.move
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_stmt.move
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_typed.move
    │   │   └── metavar_typed.sgrep
    │   ├── ocaml
    │   │   ├── aliasing_qualified.ml
    │   │   ├── aliasing_qualified.sgrep
    │   │   ├── aliasing_qualified_contructor.ml
    │   │   ├── aliasing_qualified_contructor.sgrep
    │   │   ├── anonymous_metavar.ml
    │   │   ├── concrete_syntax.ml
    │   │   ├── concrete_syntax.sgrep
    │   │   ├── dots_args.ml
    │   │   ├── dots_args.sgrep
    │   │   ├── dots_let_body.ml
    │   │   ├── dots_let_body.sgrep
    │   │   ├── dots_match_cases.ml
    │   │   ├── dots_match_cases.sgrep
    │   │   ├── dots_nested_stmts.ml
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_params.ml
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_string.ml
    │   │   ├── dots_string.sgrep
    │   │   ├── equivalence_number.ml
    │   │   ├── equivalence_number.sgrep
    │   │   ├── foo.ml
    │   │   ├── foo.sgrep
    │   │   ├── local_open.TODO
    │   │   ├── local_open.sgrep
    │   │   ├── metavar_arg.ml
    │   │   ├── metavar_arg.sgrep
    │   │   ├── metavar_call.ml
    │   │   ├── metavar_call.sgrep
    │   │   ├── metavar_cond.ml
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.ml
    │   │   ├── metavar_ellipsis_args.sgrep
    │   │   ├── metavar_equality_expr.ml
    │   │   ├── metavar_equality_expr.sgrep
    │   │   ├── metavar_equality_stmt.ml
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.ml
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.ml
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_module.ml
    │   │   ├── metavar_module.sgrep
    │   │   ├── metavar_stmt.ml
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── misc_ctor_one_arg.ml
    │   │   ├── misc_ctor_one_arg.sgrep
    │   │   ├── misc_functor.ml
    │   │   ├── misc_functor.sgrep
    │   │   ├── misc_let_and_attribute.ml
    │   │   ├── misc_let_and_attribute.sgrep
    │   │   ├── misc_match_case.ml
    │   │   ├── misc_match_case.sgrep
    │   │   ├── misc_notokenloc.ml
    │   │   ├── misc_notokenloc.sgrep
    │   │   ├── misc_try.ml
    │   │   ├── misc_try.sgrep
    │   │   ├── misc_useless_else.ml
    │   │   ├── misc_useless_else.sgrep
    │   │   ├── partial_if.ml
    │   │   ├── partial_if.sgrep
    │   │   ├── partial_let.ml
    │   │   ├── partial_let.sgrep
    │   │   ├── partial_match.ml
    │   │   ├── partial_match.sgrep
    │   │   ├── partial_try.ml
    │   │   ├── partial_try.sgrep
    │   │   ├── regexp.ml
    │   │   ├── regexp.sgrep
    │   │   ├── regexp_string.ml
    │   │   └── regexp_string.sgrep
    │   ├── php
    │   │   ├── anonymous_metavar.php
    │   │   ├── assoc_concat.php
    │   │   ├── assoc_concat.sgrep
    │   │   ├── backed_enum.php
    │   │   ├── backed_enum.sgrep
    │   │   ├── case_insensitive_function_id.php
    │   │   ├── case_insensitive_function_id.sgrep
    │   │   ├── concrete_syntax.php
    │   │   ├── constant_propogation.php
    │   │   ├── constant_propogation.sgrep
    │   │   ├── cp_builtin.php
    │   │   ├── cp_builtin.sgrep
    │   │   ├── cp_global.php
    │   │   ├── cp_global.sgrep
    │   │   ├── cp_import.php
    │   │   ├── cp_import.sgrep
    │   │   ├── deep_expr_operator.php
    │   │   ├── deep_exprstmt.php
    │   │   ├── dots_args.php
    │   │   ├── dots_args_in_block.php
    │   │   ├── dots_args_in_block.sgrep
    │   │   ├── dots_args_isset.php
    │   │   ├── dots_args_isset.sgrep
    │   │   ├── dots_array.php
    │   │   ├── dots_array.sgrep
    │   │   ├── dots_backquote.php
    │   │   ├── dots_backquote.sgrep
    │   │   ├── dots_echo.php
    │   │   ├── dots_echo.sgrep
    │   │   ├── dots_eval.php
    │   │   ├── dots_eval.sgrep
    │   │   ├── dots_foreach.php
    │   │   ├── dots_foreach.sgrep
    │   │   ├── dots_func_in_class.php
    │   │   ├── dots_func_in_class.sgrep
    │   │   ├── dots_include.php
    │   │   ├── dots_include.sgrep
    │   │   ├── dots_include1.php
    │   │   ├── dots_include1.sgrep
    │   │   ├── dots_interpolated.php
    │   │   ├── dots_interpolated.sgrep
    │   │   ├── dots_method_chaining.php
    │   │   ├── dots_method_chaining.sgrep
    │   │   ├── dots_method_chaining_simple.php
    │   │   ├── dots_method_chaining_simple.sgrep
    │   │   ├── dots_nested_stmts.php
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.php
    │   │   ├── dots_string.php
    │   │   ├── equivalence_constant_propagation.php
    │   │   ├── foo.php
    │   │   ├── foo.sgrep
    │   │   ├── gh_5594.php
    │   │   ├── gh_5594.sgrep
    │   │   ├── gh_5880.php
    │   │   ├── gh_5880.sgrep
    │   │   ├── metavar_anno.php
    │   │   ├── metavar_anno.sgrep
    │   │   ├── metavar_arg.php
    │   │   ├── metavar_call.php
    │   │   ├── metavar_class.php
    │   │   ├── metavar_class.sgrep
    │   │   ├── metavar_class_def.php
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_cond.php
    │   │   ├── metavar_ellipsis_args.php
    │   │   ├── metavar_equality_expr.php
    │   │   ├── metavar_equality_stmt.php
    │   │   ├── metavar_equality_var.php
    │   │   ├── metavar_func_def.php
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.php
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_method.php
    │   │   ├── metavar_method.sgrep
    │   │   ├── metavar_param.php
    │   │   ├── metavar_param.sgrep
    │   │   ├── metavar_param_default.php
    │   │   ├── metavar_param_default.sgrep
    │   │   ├── metavar_stmt.php
    │   │   ├── metavar_string.php
    │   │   ├── metavar_underscore.php
    │   │   ├── metavar_underscore.sgrep
    │   │   ├── misc_boolean_propagation.php
    │   │   ├── misc_boolean_propagation.sgrep
    │   │   ├── misc_dots.php
    │   │   ├── misc_dots.sgrep
    │   │   ├── misc_goto.php
    │   │   ├── misc_goto.sgrep
    │   │   ├── misc_param_default.php
    │   │   ├── misc_param_default.sgrep
    │   │   ├── misc_parameter_type_qualified.php
    │   │   ├── misc_parameter_type_qualified.sgrep
    │   │   ├── misc_parsing_keyword_as_id.php
    │   │   ├── misc_parsing_keyword_as_id.sgrep
    │   │   ├── misc_public_method.php
    │   │   ├── misc_public_method.sgrep
    │   │   ├── misc_stmt1_fbody.php
    │   │   ├── misc_stmt1_fbody.sgrep
    │   │   ├── misc_superglobals.php
    │   │   ├── misc_superglobals.sgrep
    │   │   ├── multiple_interfaces.php
    │   │   ├── multiple_interfaces.sgrep
    │   │   ├── named_arguments.php
    │   │   ├── named_arguments.sgrep
    │   │   ├── naming_origname_use_group.php
    │   │   ├── naming_origname_use_group.sgrep
    │   │   ├── naming_origname_use_single.php
    │   │   ├── naming_origname_use_single.sgrep
    │   │   ├── naming_rename_use_group.php
    │   │   ├── naming_rename_use_group.sgrep
    │   │   ├── naming_rename_use_single.php
    │   │   ├── naming_rename_use_single.sgrep
    │   │   ├── partial_if.php
    │   │   ├── regexp_string.php
    │   │   ├── sgrep
    │   │   │   ├── argref.php
    │   │   │   ├── boolean_vs_int.php
    │   │   │   ├── case_sensitive.php
    │   │   │   ├── debug_rlog.php
    │   │   │   ├── dots_in_brackets.php
    │   │   │   ├── expr_pattern.php
    │   │   │   ├── fbt.php
    │   │   │   ├── foo.php
    │   │   │   ├── foo_expr.sgrep
    │   │   │   ├── foreach.php
    │   │   │   ├── foreach.sgrep
    │   │   │   ├── foreach.spatch
    │   │   │   ├── foreach2.spatch
    │   │   │   ├── if.php
    │   │   │   ├── keywords_arguments.php
    │   │   │   ├── many_args.php
    │   │   │   ├── many_args.sgrep
    │   │   │   ├── multi.sgrep
    │   │   │   ├── namespace.php
    │   │   │   ├── namespace2.php
    │   │   │   ├── new_var.php
    │   │   │   ├── regexp.php
    │   │   │   ├── regexp.sgrep
    │   │   │   ├── return_this.php
    │   │   │   ├── statement_pattern.php
    │   │   │   ├── static_initializers.php
    │   │   │   ├── string_args.php
    │   │   │   ├── trailing_comma.php
    │   │   │   ├── xhp.php
    │   │   │   ├── xhp_metavar.php
    │   │   │   ├── xhp_metavar2.php
    │   │   │   └── xhp_metavar_attr.php
    │   │   └── spatch
    │   │   │   ├── add_statement.exp
    │   │   │   ├── add_statement.php
    │   │   │   ├── add_statement.spatch
    │   │   │   ├── array_to_int_array.php
    │   │   │   ├── bar.exp
    │   │   │   ├── bar.php
    │   │   │   ├── bar.spatch
    │   │   │   ├── bar2.exp
    │   │   │   ├── bar2.php
    │   │   │   ├── distr_plus.exp
    │   │   │   ├── distr_plus.php
    │   │   │   ├── distr_plus.spatch
    │   │   │   ├── error
    │   │   │       ├── transfo_on_comma_varargs.php
    │   │   │       ├── transfo_on_comma_varargs.spatch
    │   │   │       └── transfo_on_comma_varargs_ok.spatch
    │   │   │   ├── errors
    │   │   │       ├── missing_paren.php
    │   │   │       ├── missing_paren.spatch
    │   │   │       ├── transfo_not_at_start.php
    │   │   │       └── transfo_not_at_start.spatch
    │   │   │   ├── foo.exp
    │   │   │   ├── foo.php
    │   │   │   ├── foo.spatch
    │   │   │   ├── generics.php
    │   │   │   ├── generics.spatch
    │   │   │   ├── lvalue.exp
    │   │   │   ├── lvalue.php
    │   │   │   ├── lvalue.spatch
    │   │   │   ├── new.exp
    │   │   │   ├── new.php
    │   │   │   ├── new.spatch
    │   │   │   ├── pb_space_instanceof.exp
    │   │   │   ├── pb_space_instanceof.php
    │   │   │   ├── pb_space_instanceof.spatch
    │   │   │   ├── pb_space_new.exp
    │   │   │   ├── pb_space_new.php
    │   │   │   ├── pb_space_new.spatch
    │   │   │   ├── regexp.exp
    │   │   │   ├── regexp.php
    │   │   │   ├── regexp.spatch
    │   │   │   ├── remove_space_between.exp
    │   │   │   ├── remove_space_between.php
    │   │   │   ├── remove_space_between.spatch
    │   │   │   ├── remove_trailing_comma.exp
    │   │   │   ├── remove_trailing_comma.php
    │   │   │   ├── remove_trailing_comma.spatch
    │   │   │   ├── remove_trailing_comment.exp
    │   │   │   ├── remove_trailing_comment.php
    │   │   │   ├── remove_trailing_comment.spatch
    │   │   │   ├── remove_whole_line.exp
    │   │   │   ├── remove_whole_line.php
    │   │   │   ├── remove_whole_line.spatch
    │   │   │   ├── space.spatch
    │   │   │   ├── static_scalar.exp
    │   │   │   ├── static_scalar.php
    │   │   │   ├── static_scalar.spatch
    │   │   │   ├── stmts_fuzzy.php
    │   │   │   ├── stmts_fuzzy.spatch
    │   │   │   ├── todo
    │   │   │       ├── 1.php
    │   │   │       ├── add_statement_indented.php
    │   │   │       ├── arg_assert.php
    │   │   │       ├── arg_assert2.php
    │   │   │       ├── border1.php
    │   │   │       ├── fbt.php
    │   │   │       ├── fbt_locale.php
    │   │   │       ├── fbt_optional_last_arg.php
    │   │   │       ├── fbts.php
    │   │   │       ├── fbts_locale.php
    │   │   │       ├── funcall_multiline.php
    │   │   │       ├── metavar.php
    │   │   │       ├── metavar.spatch
    │   │   │       ├── multiline.php
    │   │   │       ├── multiline.spatch
    │   │   │       ├── multiline2.spatch
    │   │   │       ├── pb_indent.php
    │   │   │       ├── pb_indent.spatch
    │   │   │       ├── pb_space_or.php
    │   │   │       ├── pb_space_or.spatch
    │   │   │       ├── reindent_expr.php
    │   │   │       ├── reindent_expr.spatch
    │   │   │       ├── reindent_expr2.php
    │   │   │       ├── remove_second_arg.php
    │   │   │       ├── remove_second_arg.spatch
    │   │   │       ├── remove_second_arg2.spatch
    │   │   │       ├── stmts.php
    │   │   │       ├── stmts.spatch
    │   │   │       └── ui_form.php
    │   │   │   ├── todo2
    │   │   │       ├── border.exp
    │   │   │       ├── border.php
    │   │   │       ├── border.spatch
    │   │   │       ├── border_var.exp
    │   │   │       ├── border_var.php
    │   │   │       ├── border_var.spatch
    │   │   │       ├── border_var2.exp
    │   │   │       ├── border_var2.php
    │   │   │       ├── entgeneric.exp
    │   │   │       ├── entgeneric.php
    │   │   │       ├── entgeneric.spatch
    │   │   │       ├── entuser.exp
    │   │   │       ├── entuser.php
    │   │   │       ├── entuser.spatch
    │   │   │       ├── remove_refarg.exp
    │   │   │       ├── remove_refarg.php
    │   │   │       ├── remove_refarg.spatch
    │   │   │       ├── space1.exp
    │   │   │       └── space1.php
    │   │   │   ├── type.exp
    │   │   │   ├── type.php
    │   │   │   ├── type.spatch
    │   │   │   ├── xhp_metavar.exp
    │   │   │   ├── xhp_metavar.php
    │   │   │   ├── xhp_metavar.spatch
    │   │   │   ├── xhp_nested.exp
    │   │   │   ├── xhp_nested.php
    │   │   │   └── xhp_nested.spatch
    │   ├── promql
    │   │   ├── aggregation.promql
    │   │   ├── aggregation.sgrep
    │   │   ├── anonymous_metavar.promql
    │   │   ├── binary_ellipsis.promql
    │   │   ├── binary_ellipsis.sgrep
    │   │   ├── complex_func.promql
    │   │   ├── complex_func.sgrep
    │   │   ├── empty_selector.promql
    │   │   ├── empty_selector.sgrep
    │   │   ├── func.promql
    │   │   ├── func.sgrep
    │   │   ├── grouping.promql
    │   │   ├── grouping.sgrep
    │   │   ├── selector.promql
    │   │   ├── selector.sgrep
    │   │   ├── selector_ellipsis.promql
    │   │   ├── selector_ellipsis.sgrep
    │   │   ├── selector_with_name_label.promql
    │   │   ├── selector_with_name_label.sgrep
    │   │   ├── selector_without_labels.promql
    │   │   ├── selector_without_labels.sgrep
    │   │   ├── subquery.promql
    │   │   ├── subquery.sgrep
    │   │   ├── subquery_in_func.promql
    │   │   ├── subquery_in_func.sgrep
    │   │   ├── subquery_vs_range_selector.promql
    │   │   └── subquery_vs_range_selector.sgrep
    │   ├── protobuf
    │   │   └── simple.sgrep
    │   ├── python
    │   │   ├── ac_matching_dots.py
    │   │   ├── ac_matching_dots.sgrep
    │   │   ├── ac_matching_dots1.py
    │   │   ├── ac_matching_dots1.sgrep
    │   │   ├── ac_matching_explosion.py
    │   │   ├── ac_matching_explosion.sgrep
    │   │   ├── ac_matching_explosion1.py
    │   │   ├── ac_matching_explosion1.sgrep
    │   │   ├── ac_matching_explosion2.py
    │   │   ├── ac_matching_explosion2.sgrep
    │   │   ├── ac_matching_explosion3.py
    │   │   ├── ac_matching_explosion3.sgrep
    │   │   ├── ac_matching_free.py
    │   │   ├── ac_matching_free.sgrep
    │   │   ├── ac_matching_free1.py
    │   │   ├── ac_matching_free1.sgrep
    │   │   ├── ac_matching_if.py
    │   │   ├── ac_matching_if.sgrep
    │   │   ├── ac_matching_if1.py
    │   │   ├── ac_matching_if1.sgrep
    │   │   ├── ac_matching_mvars.py
    │   │   ├── ac_matching_mvars.sgrep
    │   │   ├── ac_matching_mvars1.py
    │   │   ├── ac_matching_mvars1.sgrep
    │   │   ├── ac_matching_mvars2.py
    │   │   ├── ac_matching_mvars2.sgrep
    │   │   ├── aliasing_and_direct.py
    │   │   ├── aliasing_and_direct.sgrep
    │   │   ├── aliasing_attribute.py
    │   │   ├── aliasing_attribute.sgrep
    │   │   ├── already_resolved_with_wildcard.py
    │   │   ├── already_resolved_with_wildcard.sgrep
    │   │   ├── anonymous_metavar.py
    │   │   ├── any_qualified_with_wildcard.py
    │   │   ├── any_qualified_with_wildcard.sgrep
    │   │   ├── assoc_matching_bug.py
    │   │   ├── assoc_matching_bug.sgrep
    │   │   ├── assoc_matching_dots.py
    │   │   ├── assoc_matching_dots.sgrep
    │   │   ├── assoc_matching_dots1.py
    │   │   ├── assoc_matching_dots1.sgrep
    │   │   ├── assoc_matching_explosion.py
    │   │   ├── assoc_matching_explosion.sgrep
    │   │   ├── assoc_matching_explosion1.py
    │   │   ├── assoc_matching_explosion1.sgrep
    │   │   ├── assoc_matching_explosion2.py
    │   │   ├── assoc_matching_explosion2.sgrep
    │   │   ├── assoc_matching_explosion3.py
    │   │   ├── assoc_matching_explosion3.sgrep
    │   │   ├── assoc_matching_free.py
    │   │   ├── assoc_matching_free.sgrep
    │   │   ├── assoc_matching_free1.py
    │   │   ├── assoc_matching_free1.sgrep
    │   │   ├── assoc_matching_mvars.py
    │   │   ├── assoc_matching_mvars.sgrep
    │   │   ├── assoc_matching_mvars1.py
    │   │   ├── assoc_matching_mvars1.sgrep
    │   │   ├── concrete_fstring.py
    │   │   ├── concrete_fstring.sgrep
    │   │   ├── concrete_syntax.py
    │   │   ├── constprop_dataflow.py
    │   │   ├── constprop_dataflow.sgrep
    │   │   ├── constprop_used_twice.py
    │   │   ├── constprop_used_twice.sgrep
    │   │   ├── cp_concat.py
    │   │   ├── cp_concat.sgrep
    │   │   ├── cp_eval1.py
    │   │   ├── cp_eval1.sgrep
    │   │   ├── cp_eval2.py
    │   │   ├── cp_eval2.sgrep
    │   │   ├── cp_exception.py
    │   │   ├── cp_exception.sgrep
    │   │   ├── cp_label.py
    │   │   ├── cp_label.sgrep
    │   │   ├── cp_label1.py
    │   │   ├── cp_label1.sgrep
    │   │   ├── cp_method_call.py
    │   │   ├── cp_method_call.sgrep
    │   │   ├── cp_python_mult_string.py
    │   │   ├── cp_python_mult_string.sgrep
    │   │   ├── cp_python_mult_string1.py
    │   │   ├── cp_python_mult_string1.sgrep
    │   │   ├── cp_rlval.py
    │   │   ├── cp_rlval.sgrep
    │   │   ├── cp_string_mvar.py
    │   │   ├── cp_string_mvar.sgrep
    │   │   ├── cp_strings.py
    │   │   ├── cp_strings.sgrep
    │   │   ├── cp_with.py
    │   │   ├── cp_with.sgrep
    │   │   ├── cp_yield.py
    │   │   ├── cp_yield.sgrep
    │   │   ├── deep_cond.py
    │   │   ├── deep_cond.sgrep
    │   │   ├── deep_expr_operator.py
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_expr_vs_statement.py
    │   │   ├── deep_expr_vs_statement.sgrep
    │   │   ├── deep_exprstmt.py
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── deep_fake_dataflow.py
    │   │   ├── deep_fake_dataflow.sgrep
    │   │   ├── deep_try.py
    │   │   ├── deep_try.sgrep
    │   │   ├── df_input.py
    │   │   ├── df_input.sgrep
    │   │   ├── dict_ellipsis.py
    │   │   ├── dict_ellipsis.sgrep
    │   │   ├── dots_args.py
    │   │   ├── dots_attribute.py
    │   │   ├── dots_attribute.sgrep
    │   │   ├── dots_except_as.py
    │   │   ├── dots_except_as.sgrep
    │   │   ├── dots_expr.py
    │   │   ├── dots_expr_plus.py
    │   │   ├── dots_expr_plus.sgrep
    │   │   ├── dots_expr_plus_string.py
    │   │   ├── dots_expr_plus_string.sgrep
    │   │   ├── dots_fields.py
    │   │   ├── dots_fields.sgrep
    │   │   ├── dots_fstring.py
    │   │   ├── dots_fstring.sgrep
    │   │   ├── dots_inherit.py
    │   │   ├── dots_inherit.sgrep
    │   │   ├── dots_list.py
    │   │   ├── dots_list.sgrep
    │   │   ├── dots_method_chaining.py
    │   │   ├── dots_nested_stmts.py
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_params.py
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_pattern_comprehension.py
    │   │   ├── dots_pattern_comprehension.sgrep
    │   │   ├── dots_return.py
    │   │   ├── dots_return.sgrep
    │   │   ├── dots_stmts.py
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.py
    │   │   ├── dots_tuples.py
    │   │   ├── dots_tuples.sgrep
    │   │   ├── equivalence_constant_propagation.py
    │   │   ├── equivalence_constant_propagation.sgrep
    │   │   ├── equivalence_f_string.py
    │   │   ├── equivalence_f_string.sgrep
    │   │   ├── equivalence_f_string_2.py
    │   │   ├── equivalence_f_string_2.sgrep
    │   │   ├── equivalence_f_string_3.py
    │   │   ├── equivalence_f_string_3.sgrep
    │   │   ├── equivalence_f_string_4.py
    │   │   ├── equivalence_f_string_4.sgrep
    │   │   ├── equivalence_interpolated_str.py
    │   │   ├── equivalence_interpolated_str.sgrep
    │   │   ├── equivalence_interpolated_str2.py
    │   │   ├── equivalence_interpolated_str2.sgrep
    │   │   ├── equivalence_keyword_args.py
    │   │   ├── equivalence_keyword_args.sgrep
    │   │   ├── equivalence_naming_import.py
    │   │   ├── equivalence_naming_import.sgrep
    │   │   ├── import_metavar.py
    │   │   ├── import_metavar.sgrep
    │   │   ├── import_metavar_fullpath.py
    │   │   ├── import_metavar_fullpath.sgrep
    │   │   ├── import_negatives.py
    │   │   ├── import_negatives.sgrep
    │   │   ├── import_negatives2.py
    │   │   ├── import_negatives2.sgrep
    │   │   ├── imports.py
    │   │   ├── imports.sgrep
    │   │   ├── index_tuple.py
    │   │   ├── index_tuple.sgrep
    │   │   ├── less_attributes.py
    │   │   ├── less_attributes.sgrep
    │   │   ├── less_catch.py
    │   │   ├── less_catch.sgrep
    │   │   ├── less_catch_multiple.py
    │   │   ├── less_catch_multiple.sgrep
    │   │   ├── less_inherits.py
    │   │   ├── less_inherits.sgrep
    │   │   ├── less_typehint.py
    │   │   ├── less_typehint.sgrep
    │   │   ├── less_typehint2.py
    │   │   ├── less_typehint2.sgrep
    │   │   ├── metavar_anno.py
    │   │   ├── metavar_anno.sgrep
    │   │   ├── metavar_anno_fqn.py
    │   │   ├── metavar_anno_fqn.sgrep
    │   │   ├── metavar_arg.py
    │   │   ├── metavar_call.py
    │   │   ├── metavar_class_def.py
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_cond.py
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_dict.py
    │   │   ├── metavar_dict.sgrep
    │   │   ├── metavar_ellipsis_args.py
    │   │   ├── metavar_equality_expr.py
    │   │   ├── metavar_equality_field_vs_var.py
    │   │   ├── metavar_equality_field_vs_var.sgrep
    │   │   ├── metavar_equality_funcdef_vs_use.py
    │   │   ├── metavar_equality_funcdef_vs_use.sgrep
    │   │   ├── metavar_equality_param_vs_use.py
    │   │   ├── metavar_equality_param_vs_use.sgrep
    │   │   ├── metavar_equality_stmt.py
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.py
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.py
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.py
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_iterator.py
    │   │   ├── metavar_iterator.sgrep
    │   │   ├── metavar_key_value.py
    │   │   ├── metavar_kwd_arg.py
    │   │   ├── metavar_kwd_arg.sgrep
    │   │   ├── metavar_match.py
    │   │   ├── metavar_match.sgrep
    │   │   ├── metavar_pattern.py
    │   │   ├── metavar_pattern.sgrep
    │   │   ├── metavar_set.py
    │   │   ├── metavar_set.sgrep
    │   │   ├── metavar_stmt.py
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_string.py
    │   │   ├── metavar_tuple.py
    │   │   ├── metavar_tuple.sgrep
    │   │   ├── metavar_typed.py
    │   │   ├── metavar_typed.sgrep
    │   │   ├── misc_attributes.py
    │   │   ├── misc_attributes.sgrep
    │   │   ├── misc_block_import.py
    │   │   ├── misc_block_import.sgrep
    │   │   ├── misc_class_regression.py
    │   │   ├── misc_class_regression.sgrep
    │   │   ├── misc_comprehension.py
    │   │   ├── misc_comprehension.sgrep
    │   │   ├── misc_dots_stmts.py
    │   │   ├── misc_dots_stmts.sgrep
    │   │   ├── misc_else.py
    │   │   ├── misc_else.sgrep
    │   │   ├── misc_encoded_string.py
    │   │   ├── misc_encoded_string.sgrep
    │   │   ├── misc_except_matching.py
    │   │   ├── misc_except_matching.sgrep
    │   │   ├── misc_exn.py
    │   │   ├── misc_exn.sgrep
    │   │   ├── misc_fake_propa.py
    │   │   ├── misc_fake_propa.sgrep
    │   │   ├── misc_faketok1.py
    │   │   ├── misc_faketok1.sgrep
    │   │   ├── misc_faketok2.py
    │   │   ├── misc_faketok2.sgrep
    │   │   ├── misc_faketok3.py
    │   │   ├── misc_faketok3.sgrep
    │   │   ├── misc_if1.py
    │   │   ├── misc_if1.sgrep
    │   │   ├── misc_import.py
    │   │   ├── misc_import.sgrep
    │   │   ├── misc_match_stmt.py
    │   │   ├── misc_match_stmt.sgrep
    │   │   ├── misc_metavar_field_anyorder.py
    │   │   ├── misc_metavar_field_anyorder.sgrep
    │   │   ├── misc_metavar_vs_fstring.py
    │   │   ├── misc_metavar_vs_fstring.sgrep
    │   │   ├── misc_naming_bug.py
    │   │   ├── misc_naming_bug.sgrep
    │   │   ├── misc_naming_bug2.py
    │   │   ├── misc_naming_bug2.sgrep
    │   │   ├── misc_paren.py
    │   │   ├── misc_paren.sgrep
    │   │   ├── misc_prefix_string.py
    │   │   ├── misc_prefix_string.sgrep
    │   │   ├── misc_range_statements.py
    │   │   ├── misc_range_statements.sgrep
    │   │   ├── misc_regression1.py
    │   │   ├── misc_regression1.sgrep
    │   │   ├── misc_regression2.py
    │   │   ├── misc_regression2.sgrep
    │   │   ├── misc_return_empty.py
    │   │   ├── misc_return_empty.sgrep
    │   │   ├── misc_stmts1.py
    │   │   ├── misc_stmts1.sgrep
    │   │   ├── misc_tuple.py
    │   │   ├── misc_tuple.sgrep
    │   │   ├── misc_tuple2.py
    │   │   ├── misc_tuple2.sgrep
    │   │   ├── misc_with_no_rename.py
    │   │   ├── misc_with_no_rename.sgrep
    │   │   ├── misc_with_parens.py
    │   │   ├── misc_with_parens.sgrep
    │   │   ├── multi_import.py
    │   │   ├── multi_import.sgrep
    │   │   ├── multi_qualified_wildcard.py
    │   │   ├── multi_qualified_wildcard.sgrep
    │   │   ├── multiple_metavars.py
    │   │   ├── multiple_metavars.sgrep
    │   │   ├── parenthesized_with.py
    │   │   ├── parenthesized_with.sgrep
    │   │   ├── pip614-extended-decorator-grammer1.py
    │   │   ├── pip614-extended-decorator-grammer1.sgrep
    │   │   ├── pip614-extended-decorator-grammer2.py
    │   │   ├── pip614-extended-decorator-grammer2.sgrep
    │   │   ├── python2.py
    │   │   ├── python2.sgrep
    │   │   ├── regexp_string.py
    │   │   ├── regexp_string_backref.py
    │   │   ├── regexp_string_backref.sgrep
    │   │   ├── scoped_wildcard.py
    │   │   ├── scoped_wildcard.sgrep
    │   │   ├── set_vs_dict.py
    │   │   ├── set_vs_dict.sgrep
    │   │   ├── set_vs_dict2.py
    │   │   ├── set_vs_dict2.sgrep
    │   │   ├── set_vs_dict3.py
    │   │   ├── set_vs_dict3.sgrep
    │   │   ├── standalone_decorator.py
    │   │   ├── standalone_decorator.sgrep
    │   │   ├── standalone_decorator_single_arg.py
    │   │   ├── standalone_decorator_single_arg.sgrep
    │   │   ├── static_method.py
    │   │   ├── static_method.sgrep
    │   │   ├── stmts_to_fields.py
    │   │   ├── stmts_to_fields.sgrep
    │   │   ├── unordered_metavar2.py
    │   │   ├── unordered_metavar2.sgrep
    │   │   ├── untyped_vs_typed.py
    │   │   ├── untyped_vs_typed.sgrep
    │   │   ├── visitor_def.py
    │   │   ├── visitor_def.sgrep
    │   │   ├── wildcard_qualified.py
    │   │   ├── wildcard_qualified.sgrep
    │   │   ├── wildcard_qualified_mvar.py
    │   │   └── wildcard_qualified_mvar.sgrep
    │   ├── ql
    │   │   ├── anonymous_metavar.ql
    │   │   ├── concrete_syntax.ql
    │   │   ├── deep_expr_operator.ql
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── dots_args.ql
    │   │   ├── dots_expr.ql
    │   │   ├── dots_expr.sgrep
    │   │   ├── dots_module.ql
    │   │   ├── dots_module.sgrep
    │   │   ├── dots_predicate.ql
    │   │   ├── dots_predicate.sgrep
    │   │   ├── dots_stmts.ql
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.ql
    │   │   ├── metavar_anno.ql
    │   │   ├── metavar_anno.sgrep
    │   │   ├── metavar_arg.ql
    │   │   ├── metavar_call.ql
    │   │   ├── metavar_class_def.ql
    │   │   ├── metavar_ellipsis_args.ql
    │   │   ├── metavar_equality_expr.ql
    │   │   └── metavar_equality_expr.sgrep
    │   ├── r
    │   │   ├── anonymous_metavar.r
    │   │   ├── concrete_syntax.r
    │   │   ├── dots_args.r
    │   │   ├── dots_nested_stmts.r
    │   │   ├── dots_stmts.r
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.r
    │   │   ├── metavar_arg.r
    │   │   ├── metavar_call.r
    │   │   └── metavar_equality_var.r
    │   ├── ruby
    │   │   ├── anonymous_metavar.rb
    │   │   ├── blocks.rb
    │   │   ├── blocks.sgrep
    │   │   ├── blocks1.rb
    │   │   ├── blocks1.sgrep
    │   │   ├── call_expr_property.rb
    │   │   ├── call_expr_property.sgrep
    │   │   ├── command_call_with_ellipsis.rb
    │   │   ├── command_call_with_ellipsis.sgrep
    │   │   ├── command_call_with_ellipsis_with_block.rb
    │   │   ├── command_call_with_ellipsis_with_block.sgrep
    │   │   ├── command_call_with_ellipsis_with_do_block.rb
    │   │   ├── command_call_with_ellipsis_with_do_block.sgrep
    │   │   ├── command_call_with_ellipsis_with_newlined_do_block.rb
    │   │   ├── command_call_with_ellipsis_with_newlined_do_block.sgrep
    │   │   ├── concrete_syntax.rb
    │   │   ├── cp_assign.rb
    │   │   ├── cp_assign.sgrep
    │   │   ├── cp_concat.rb
    │   │   ├── cp_concat.sgrep
    │   │   ├── cp_interpolated.rb
    │   │   ├── cp_interpolated.sgrep
    │   │   ├── cp_string_mutable.rb
    │   │   ├── cp_string_mutable.sgrep
    │   │   ├── deep_expr_operator.rb
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_exprstmt.rb
    │   │   ├── deep_exprstmt.sgrep
    │   │   ├── dots_args.rb
    │   │   ├── dots_atom.TODO
    │   │   ├── dots_atom.sgrep
    │   │   ├── dots_expr.rb
    │   │   ├── dots_interpolated_string.rb
    │   │   ├── dots_interpolated_string.sgrep
    │   │   ├── dots_method_chaining.rb
    │   │   ├── dots_multiple_interpolated.rb
    │   │   ├── dots_multiple_interpolated.sgrep
    │   │   ├── dots_nested_stmts.rb
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_regexp.rb
    │   │   ├── dots_regexp.sgrep
    │   │   ├── dots_stmts.rb
    │   │   ├── dots_stmts.sgrep
    │   │   ├── dots_string.rb
    │   │   ├── dots_struct_new.rb
    │   │   ├── dots_struct_new.sgrep
    │   │   ├── equivalence_constant_propagation.rb
    │   │   ├── equivalence_keyword_args.rb
    │   │   ├── equivalence_keyword_args.sgrep
    │   │   ├── equivalence_keyword_args_hash.rb
    │   │   ├── equivalence_keyword_args_hash.sgrep
    │   │   ├── foo.rb
    │   │   ├── foo.sgrep
    │   │   ├── implicit_return.rb
    │   │   ├── implicit_return.sgrep
    │   │   ├── lambda.rb
    │   │   ├── lambda.sgrep
    │   │   ├── metavar_arg.rb
    │   │   ├── metavar_atom.rb
    │   │   ├── metavar_atom.sgrep
    │   │   ├── metavar_atom_or_id.rb
    │   │   ├── metavar_atom_or_id.sgrep
    │   │   ├── metavar_call.rb
    │   │   ├── metavar_class_def.rb
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_classname.rb
    │   │   ├── metavar_classname.sgrep
    │   │   ├── metavar_cond.rb
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis_args.rb
    │   │   ├── metavar_ellipsis_args_empty.rb
    │   │   ├── metavar_ellipsis_args_empty.sgrep
    │   │   ├── metavar_equality_expr.rb
    │   │   ├── metavar_equality_stmt.rb
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.rb
    │   │   ├── metavar_equality_var.sgrep
    │   │   ├── metavar_func_def.rb
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.rb
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_interpolated.rb
    │   │   ├── metavar_interpolated.sgrep
    │   │   ├── metavar_key_value.rb
    │   │   ├── metavar_regexp.rb
    │   │   ├── metavar_regexp.sgrep
    │   │   ├── metavar_stmt.rb
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── misc_backtick_interp.rb
    │   │   ├── misc_backtick_interp.sgrep
    │   │   ├── misc_backticks.rb
    │   │   ├── misc_backticks.sgrep
    │   │   ├── misc_bitand.rb
    │   │   ├── misc_bitand.sgrep
    │   │   ├── misc_div0.rb
    │   │   ├── misc_div0.sgrep
    │   │   ├── misc_dot_call.rb
    │   │   ├── misc_dot_call.sgrep
    │   │   ├── misc_dotaccess.rb
    │   │   ├── misc_dotaccess.sgrep
    │   │   ├── misc_empty_token1.rb
    │   │   ├── misc_empty_token1.sgrep
    │   │   ├── misc_hidden_call.rb
    │   │   ├── misc_hidden_call.sgrep
    │   │   ├── misc_kwdarg.rb
    │   │   ├── misc_kwdarg.sgrep
    │   │   ├── misc_kwdarg2.rb
    │   │   ├── misc_kwdarg2.sgrep
    │   │   ├── misc_kwdarg3.rb
    │   │   ├── misc_kwdarg3.sgrep
    │   │   ├── misc_kwdarg_dots.rb
    │   │   ├── misc_kwdarg_dots.sgrep
    │   │   ├── misc_kwdarg_vs_atom.rb
    │   │   ├── misc_kwdarg_vs_atom.sgrep
    │   │   ├── misc_multiple_assign.rb
    │   │   ├── misc_multiple_assign.sgrep
    │   │   ├── misc_multiple_assign_uneq_lists.rb
    │   │   ├── misc_multiple_assign_uneq_lists.sgrep
    │   │   ├── misc_parsing1.rb
    │   │   ├── misc_parsing1.sgrep
    │   │   ├── misc_parsing2.rb
    │   │   ├── misc_parsing2.sgrep
    │   │   ├── misc_range.rb
    │   │   ├── misc_range.sgrep
    │   │   ├── regexp_ellipsis.rb
    │   │   ├── regexp_ellipsis.sgrep
    │   │   ├── regexp_literal.rb
    │   │   ├── regexp_literal.sgrep
    │   │   ├── regexp_metavar.rb
    │   │   ├── regexp_metavar.sgrep
    │   │   ├── regexp_string.rb
    │   │   ├── regexp_template.rb
    │   │   ├── regexp_template.sgrep
    │   │   ├── rescue_func.rb
    │   │   ├── rescue_func.sgrep
    │   │   ├── unless_argkwd.rb
    │   │   └── unless_argkwd.sgrep
    │   ├── rust
    │   │   ├── anonymous_metavar.rs
    │   │   ├── attribute_ellipsis.rs
    │   │   ├── attribute_ellipsis.sgrep
    │   │   ├── attribute_function.rs
    │   │   ├── attribute_function.sgrep
    │   │   ├── attribute_matching.rs
    │   │   ├── attribute_matching.sgrep
    │   │   ├── concrete_syntax.rs
    │   │   ├── cp_expr_stmt_if.ex
    │   │   ├── cp_expr_stmt_if.sgrep
    │   │   ├── deep_expr_operator.rs
    │   │   ├── deep_exprstmt.rs
    │   │   ├── dots_args.rs
    │   │   ├── dots_field_chaining.rs
    │   │   ├── dots_field_chaining.sgrep
    │   │   ├── dots_macro_call.rs
    │   │   ├── dots_macro_call.sgrep
    │   │   ├── dots_method_chaining.rs
    │   │   ├── dots_method_chaining.sgrep
    │   │   ├── dots_mod.rs
    │   │   ├── dots_mod.sgrep
    │   │   ├── dots_nested_stmts.rs
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_stmts.rs
    │   │   ├── dots_string.rs
    │   │   ├── dots_struct.rs
    │   │   ├── dots_struct.sgrep
    │   │   ├── epattern_type_prop.rs
    │   │   ├── epattern_type_prop.sgrep
    │   │   ├── implicit_return.rs
    │   │   ├── implicit_return.sgrep
    │   │   ├── match_variant_names.rs
    │   │   ├── match_variant_names.sgrep
    │   │   ├── metavar_arg.rs
    │   │   ├── metavar_call.rs
    │   │   ├── metavar_class_def.rs
    │   │   ├── metavar_class_def.sgrep
    │   │   ├── metavar_cond.rs
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_ellipsis.rs
    │   │   ├── metavar_ellipsis.sgrep
    │   │   ├── metavar_ellipsis_args.rs
    │   │   ├── metavar_ellipsis_args.sgrep
    │   │   ├── metavar_equality_expr.rs
    │   │   ├── metavar_equality_stmt.rs
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.rs
    │   │   ├── metavar_func_def.rs
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.rs
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_param.rs
    │   │   ├── metavar_param.sgrep
    │   │   ├── metavar_pattern.rs
    │   │   ├── metavar_pattern.sgrep
    │   │   ├── metavar_standalone.rs
    │   │   ├── metavar_standalone.sgrep
    │   │   ├── metavar_stmt.rs
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── misc_impl.rs
    │   │   ├── misc_impl.sgrep
    │   │   ├── misc_macrocall.rs
    │   │   ├── misc_macrocall.sgrep
    │   │   ├── misc_name_pattern.rs
    │   │   ├── misc_name_pattern.sgrep
    │   │   ├── misc_naming_recursion.rs
    │   │   ├── misc_naming_recursion.sgrep
    │   │   ├── misc_return_3.rs
    │   │   ├── misc_return_3.sgrep
    │   │   ├── misc_scoped_idents.rs
    │   │   ├── misc_scoped_idents.sgrep
    │   │   ├── misc_scoped_idents_as.rs
    │   │   ├── misc_scoped_idents_as.sgrep
    │   │   ├── struct_pattern.rs
    │   │   └── struct_pattern.sgrep
    │   ├── scala
    │   │   ├── anonymous_metavar.scala
    │   │   ├── apply_as_new.scala
    │   │   ├── apply_as_new.sgrep
    │   │   ├── by_name.scala
    │   │   ├── by_name.sgrep
    │   │   ├── case_class_block.scala
    │   │   ├── case_class_block.sgrep
    │   │   ├── case_object_block.scala
    │   │   ├── case_object_block.sgrep
    │   │   ├── catch_ellipsis.scala
    │   │   ├── catch_ellipsis.sgrep
    │   │   ├── class_params.scala
    │   │   ├── class_params.sgrep
    │   │   ├── concrete_syntax.scala
    │   │   ├── constructor_annots.scala
    │   │   ├── constructor_annots.sgrep
    │   │   ├── custom_interpolated.scala
    │   │   ├── custom_interpolated.sgrep
    │   │   ├── deep_expr_operator.scala
    │   │   ├── deep_exprstmt.scala
    │   │   ├── dots_args.scala
    │   │   ├── dots_atom.scala
    │   │   ├── dots_atom.sgrep
    │   │   ├── dots_match.scala
    │   │   ├── dots_match.sgrep
    │   │   ├── dots_method_chaining.scala
    │   │   ├── dots_method_chaining.sgrep
    │   │   ├── dots_nested_stmts.scala
    │   │   ├── dots_stmts.scala
    │   │   ├── dots_string.scala
    │   │   ├── equivalence_constant_propagation.scala
    │   │   ├── equivalence_naming_import.scala
    │   │   ├── equivalence_naming_import.sgrep
    │   │   ├── for_loop.scala
    │   │   ├── for_loop.sgrep
    │   │   ├── for_loop_ellipsis.scala
    │   │   ├── for_loop_ellipsis.sgrep
    │   │   ├── implicit_return.scala
    │   │   ├── implicit_return.sgrep
    │   │   ├── import_metavariable.scala
    │   │   ├── import_metavariable.sgrep
    │   │   ├── infix_method.scala
    │   │   ├── infix_method.sgrep
    │   │   ├── match_type_ellipsis.scala
    │   │   ├── match_type_ellipsis.sgrep
    │   │   ├── metavar_anno.scala
    │   │   ├── metavar_arg.scala
    │   │   ├── metavar_atom.scala
    │   │   ├── metavar_atom.sgrep
    │   │   ├── metavar_call.scala
    │   │   ├── metavar_class_def.scala
    │   │   ├── metavar_cond.scala
    │   │   ├── metavar_cond.sgrep
    │   │   ├── metavar_equality_expr.scala
    │   │   ├── metavar_equality_stmt.scala
    │   │   ├── metavar_equality_stmt.sgrep
    │   │   ├── metavar_equality_var.scala
    │   │   ├── metavar_func_def.scala
    │   │   ├── metavar_func_def.sgrep
    │   │   ├── metavar_import.scala
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_key_value.scala
    │   │   ├── metavar_key_value.sgrep
    │   │   ├── metavar_pat.scala
    │   │   ├── metavar_pat.sgrep
    │   │   ├── metavar_stmt.scala
    │   │   ├── metavar_stmt.sgrep
    │   │   ├── metavar_typed.scala
    │   │   ├── metavar_typed.sgrep
    │   │   ├── metavar_typed_parens.scala
    │   │   ├── metavar_typed_parens.sgrep
    │   │   ├── minus_identifier.scala
    │   │   ├── minus_identifier.sgrep
    │   │   ├── misc_symbol.scala
    │   │   ├── misc_symbol.sgrep
    │   │   ├── pat_def.scala
    │   │   ├── pat_def.sgrep
    │   │   ├── pat_ellipsis.scala
    │   │   ├── pat_ellipsis.sgrep
    │   │   ├── tuple_def.scala
    │   │   ├── tuple_def.sgrep
    │   │   ├── tuple_infix_type.scala
    │   │   └── tuple_infix_type.sgrep
    │   ├── solidity
    │   │   ├── anonymous_metavar.sol
    │   │   ├── concrete_syntax.sol
    │   │   ├── deep_expr_operator.sol
    │   │   ├── deep_exprstmt.sol
    │   │   ├── dots_args.sol
    │   │   ├── dots_contract.sgrep
    │   │   ├── dots_contract.sol
    │   │   ├── dots_for.sol
    │   │   ├── dots_inherit.sgrep
    │   │   ├── dots_inherit.sol
    │   │   ├── dots_nested_stmts.sol
    │   │   ├── dots_stmts.sol
    │   │   ├── dots_string.sol
    │   │   ├── for_dots_misc1.sgrep
    │   │   ├── for_dots_misc1.sol
    │   │   ├── metavar_arg.sol
    │   │   ├── metavar_call.sol
    │   │   ├── metavar_equality_var.sol
    │   │   ├── metavar_version.sgrep
    │   │   ├── metavar_version.sol
    │   │   ├── misc_constructor.sgrep
    │   │   ├── misc_constructor.sol
    │   │   ├── misc_enum.sgrep
    │   │   ├── misc_enum.sol
    │   │   ├── misc_event.sgrep
    │   │   ├── misc_event.sol
    │   │   ├── misc_modifier.sgrep
    │   │   ├── misc_modifier.sol
    │   │   ├── misc_parent.sgrep
    │   │   ├── misc_parent.sol
    │   │   ├── misc_try_as_lambda.sgrep
    │   │   ├── misc_try_as_lambda.sol
    │   │   ├── misc_unchecked.sgrep
    │   │   └── misc_unchecked.sol
    │   ├── swift
    │   │   ├── anonymous_metavar.swift
    │   │   ├── class_ellipsis.sgrep
    │   │   ├── class_ellipsis.swift
    │   │   ├── class_variants.sgrep
    │   │   ├── class_variants.swift
    │   │   ├── concrete_syntax.swift
    │   │   ├── deep_expr_operator.swift
    │   │   ├── deep_exprstmt.swift
    │   │   ├── dots_args.swift
    │   │   ├── dots_nested_stmts.sgrep
    │   │   ├── dots_nested_stmts.swift
    │   │   ├── dots_stmts.swift
    │   │   ├── dots_string.swift
    │   │   ├── ellipsis_metavar.sgrep
    │   │   ├── ellipsis_metavar.swift
    │   │   ├── if_let.sgrep
    │   │   ├── if_let.swift
    │   │   ├── keypath.sgrep
    │   │   ├── keypath.swift
    │   │   ├── labeled_binding_in_case_stmt.sgrep
    │   │   ├── labeled_binding_in_case_stmt.swift
    │   │   ├── match_name.sgrep
    │   │   ├── match_name.swift
    │   │   ├── metavar_arg.swift
    │   │   ├── metavar_call.swift
    │   │   ├── metavar_equality_var.swift
    │   │   ├── nav_exp_ellipsis.sgrep
    │   │   ├── nav_exp_ellipsis.swift
    │   │   ├── semgrep_ellipsis.sgrep
    │   │   ├── semgrep_ellipsis.swift
    │   │   ├── semgrep_ellipsis_no_semi.sgrep
    │   │   ├── semgrep_ellipsis_no_semi.swift
    │   │   ├── typed_metavar.sgrep
    │   │   ├── typed_metavar.swift
    │   │   ├── unbounded_range_ellipsis.sgrep
    │   │   └── unbounded_range_ellipsis.swift
    │   ├── terraform
    │   │   ├── anonymous_metavar.tf
    │   │   ├── concrete_syntax.tf
    │   │   ├── deep_expr_operator.sgrep
    │   │   ├── deep_expr_operator.tf
    │   │   ├── dots_args.tf
    │   │   ├── dots_fields.sgrep
    │   │   ├── dots_fields.tf
    │   │   ├── dots_objects.sgrep
    │   │   ├── dots_objects.tf
    │   │   ├── dots_resource.sgrep
    │   │   ├── dots_resource.tf
    │   │   ├── dots_string.tf
    │   │   ├── dots_top.sgrep
    │   │   ├── dots_top.tf
    │   │   ├── equivalence_constant_propagation.sgrep
    │   │   ├── equivalence_constant_propagation.tf
    │   │   ├── equivalence_constant_propagation2.sgrep
    │   │   ├── equivalence_constant_propagation2.tf
    │   │   ├── metavar_arg.tf
    │   │   ├── metavar_call.tf
    │   │   ├── metavar_equality_var.sgrep
    │   │   └── metavar_equality_var.tf
    │   ├── ts
    │   │   ├── anonymous_metavar.ts
    │   │   ├── concrete_syntax.ts
    │   │   ├── deep_expr_operator.ts
    │   │   ├── deep_exprstmt.ts
    │   │   ├── deep_record.sgrep
    │   │   ├── deep_record.ts
    │   │   ├── dots_annotated_parameter.sgrep
    │   │   ├── dots_annotated_parameter.ts
    │   │   ├── dots_args.ts
    │   │   ├── dots_arrow_body.sgrep
    │   │   ├── dots_arrow_body.ts
    │   │   ├── dots_import.sgrep
    │   │   ├── dots_import.ts
    │   │   ├── dots_import_complex.sgrep
    │   │   ├── dots_import_complex.ts
    │   │   ├── dots_method_chaining.ts
    │   │   ├── dots_nested_stmts.ts
    │   │   ├── dots_params.sgrep
    │   │   ├── dots_params.ts
    │   │   ├── dots_stmts.ts
    │   │   ├── dots_string.ts
    │   │   ├── dots_type_literal.sgrep
    │   │   ├── dots_type_literal.ts
    │   │   ├── ellipsis_class_body.sgrep
    │   │   ├── ellipsis_class_body.ts
    │   │   ├── equivalence_constant_propagation.ts
    │   │   ├── equivalence_decl_vs_assign.sgrep
    │   │   ├── equivalence_decl_vs_assign.ts
    │   │   ├── ignore_types_function.sgrep
    │   │   ├── ignore_types_function.ts
    │   │   ├── import_vN.sgrep
    │   │   ├── import_vN.ts
    │   │   ├── less_type_let.sgrep
    │   │   ├── less_type_let.ts
    │   │   ├── metavar_arg.ts
    │   │   ├── metavar_call.ts
    │   │   ├── metavar_cond.ts
    │   │   ├── metavar_ellipsis_args.ts
    │   │   ├── metavar_equality_expr.ts
    │   │   ├── metavar_equality_methoddef_vs_use.sgrep
    │   │   ├── metavar_equality_methoddef_vs_use.ts
    │   │   ├── metavar_equality_stmt.ts
    │   │   ├── metavar_equality_var.ts
    │   │   ├── metavar_func_def.ts
    │   │   ├── metavar_import.sgrep
    │   │   ├── metavar_import.ts
    │   │   ├── metavar_key_value.ts
    │   │   ├── metavar_stmt.ts
    │   │   ├── metavar_typed_class.sgrep
    │   │   ├── metavar_typed_class.ts
    │   │   ├── metavar_typed_expr.sgrep
    │   │   ├── metavar_typed_expr.ts
    │   │   ├── metavar_typed_func.sgrep
    │   │   ├── metavar_typed_func.ts
    │   │   ├── misc_as_cast.sgrep
    │   │   ├── misc_as_cast.ts
    │   │   ├── misc_ast.sgrep
    │   │   ├── misc_ast.ts
    │   │   ├── misc_commonjs.sgrep
    │   │   ├── misc_commonjs.ts
    │   │   ├── misc_decorator1.sgrep
    │   │   ├── misc_decorator1.ts
    │   │   ├── misc_decorator_export.sgrep
    │   │   ├── misc_decorator_export.ts
    │   │   ├── misc_decorator_method.sgrep
    │   │   ├── misc_decorator_method.ts
    │   │   ├── misc_deep_metavar.sgrep
    │   │   ├── misc_deep_metavar.ts
    │   │   ├── misc_export.sgrep
    │   │   ├── misc_export.ts
    │   │   ├── misc_extends_qualified.sgrep
    │   │   ├── misc_extends_qualified.ts
    │   │   ├── misc_function.sgrep
    │   │   ├── misc_function.ts
    │   │   ├── misc_implements.sgrep
    │   │   ├── misc_implements.ts
    │   │   ├── misc_method.sgrep
    │   │   ├── misc_method.ts
    │   │   ├── misc_naming_recursion.sgrep
    │   │   ├── misc_naming_recursion.ts
    │   │   ├── misc_private_prop.sgrep
    │   │   ├── misc_private_prop.ts
    │   │   ├── misc_semicolon.sgrep
    │   │   ├── misc_semicolon.ts
    │   │   ├── misc_type1.sgrep
    │   │   ├── misc_type1.ts
    │   │   ├── misc_type2.sgrep
    │   │   ├── misc_type2.ts
    │   │   ├── misc_type3.sgrep
    │   │   ├── misc_type3.ts
    │   │   ├── opt_chain.sgrep
    │   │   ├── opt_chain.ts
    │   │   ├── param_type_annot.sgrep
    │   │   ├── param_type_annot.ts
    │   │   ├── record_functions.sgrep
    │   │   ├── record_functions.ts
    │   │   ├── regexp_fieldname.sgrep
    │   │   ├── regexp_fieldname.ts
    │   │   ├── regexp_string.ts
    │   │   ├── type_assert.sgrep
    │   │   ├── type_assert.ts
    │   │   ├── unordered_implement.sgrep
    │   │   └── unordered_implement.ts
    │   ├── xml
    │   │   ├── dots_body.sgrep
    │   │   ├── dots_body.xml
    │   │   ├── misc_attribute_pattern.sgrep
    │   │   └── misc_attribute_pattern.xml
    │   └── yaml
    │   │   ├── anchor.sgrep
    │   │   ├── anchor.yaml
    │   │   ├── anonymous_metavar.yaml
    │   │   ├── array_field_only.sgrep
    │   │   ├── array_field_only.yaml
    │   │   ├── dots_dict_list.sgrep
    │   │   ├── dots_dict_list.yaml
    │   │   ├── dots_list_dict.sgrep
    │   │   ├── dots_list_dict.yaml
    │   │   ├── dots_list_list.sgrep
    │   │   ├── dots_list_list.yaml
    │   │   ├── dots_nested.sgrep
    │   │   ├── dots_nested.yaml
    │   │   ├── empty.sgrep
    │   │   ├── empty.yaml
    │   │   ├── field_only.sgrep
    │   │   ├── field_only.yaml
    │   │   ├── metavar_array.sgrep
    │   │   ├── metavar_array.yaml
    │   │   ├── metavar_equality.sgrep
    │   │   ├── metavar_equality.yaml
    │   │   ├── metavar_field.sgrep
    │   │   ├── metavar_field.yaml
    │   │   ├── misc_double_id.sgrep
    │   │   ├── misc_double_id.yaml
    │   │   ├── misc_other_formats_braces.sgrep
    │   │   ├── misc_other_formats_braces.yaml
    │   │   ├── post_unicode.sgrep
    │   │   ├── post_unicode.yaml
    │   │   ├── semgrep
    │   │       ├── array.sgrep
    │   │       ├── array_brackets.sgrep
    │   │       ├── ellipses_only.sgrep
    │   │       ├── ellipses_stress.sgrep
    │   │       └── field.sgrep
    │   │   ├── tag_literal.sgrep
    │   │   ├── tag_literal.yaml
    │   │   ├── tag_metavar.sgrep
    │   │   ├── tag_metavar.yaml
    │   │   ├── unicode.sgrep
    │   │   ├── unicode.yaml
    │   │   └── yaml_rules
    │   │       ├── colleen.yaml
    │   │       ├── kubernetes_ex.yml
    │   │       ├── kubernetes_semgrep.yaml
    │   │       └── kubernetes_spacegrep.yaml
    ├── perf
    │   ├── OS.java
    │   ├── ajin.yaml
    │   ├── ajin2.yaml
    │   ├── ajin2_semgrepcore.yaml
    │   ├── benchmarking
    │   │   ├── netflix-slow-javascript.yml
    │   │   └── netflix-slow-python.yml
    │   ├── bloom
    │   │   ├── BadLogClass.java
    │   │   ├── ExampleErrorClass.java
    │   │   ├── crlf-injection-logs.yaml
    │   │   ├── crlf-injection-rule1.yaml
    │   │   ├── l10000.js
    │   │   ├── stmts-ellipsis.sgrep
    │   │   └── stmts-mv-ellipsis.sgrep
    │   ├── ellipsis-js.sgrep
    │   ├── ellipsis-python.sgrep
    │   ├── ellipsis-slow-js.sgrep
    │   ├── eq.sgrep
    │   ├── force_timeout.py
    │   ├── force_timeout.yaml
    │   ├── java.sgrep
    │   ├── java.yml
    │   ├── l100.js
    │   ├── l100.py
    │   ├── l1000.js
    │   ├── l1000.py
    │   ├── l10000.js
    │   ├── l10000.py
    │   ├── my_first_calculator.py
    │   ├── swagger-ui-bundle.js
    │   ├── three.js
    │   ├── timeout.js
    │   ├── timeout.py
    │   ├── timeout.sgrep
    │   ├── timeout_gracefully.py
    │   └── timeout_gracefully.yaml
    ├── precommit_dogfooding
    │   ├── bandit.yml
    │   └── python.yml
    ├── rule_formats
    │   ├── jwt-hardcode.rb
    │   ├── jwt-hardcode.yaml
    │   ├── jwt-hardcode1.jsonnet
    │   ├── jwt-hardcode2.jsonnet
    │   ├── new_syntax.json
    │   ├── new_syntax.jsonnet
    │   ├── new_syntax.yaml
    │   ├── new_syntax_basic.json
    │   ├── notes.txt
    │   ├── ok-rule-ids.yaml
    │   ├── sca_version_no_space.yaml
    │   ├── string_pattern.json
    │   ├── string_pattern.jsonnet
    │   └── string_pattern.yaml
    ├── rules
    │   ├── Makefile
    │   ├── TEMPLATE.js
    │   ├── TEMPLATE.yaml
    │   ├── TODO_taint_messy_sink.php
    │   ├── TODO_taint_messy_sink.yaml
    │   ├── and_inside.mustache
    │   ├── and_inside.yaml
    │   ├── anonymous_metavar.py
    │   ├── anonymous_metavar.yaml
    │   ├── anywhere_global.py
    │   ├── anywhere_global.yaml
    │   ├── anywhere_include.c
    │   ├── anywhere_include.yaml
    │   ├── anywhere_metavar.py
    │   ├── anywhere_metavar.yaml
    │   ├── as_metavariable.py
    │   ├── as_metavariable.yaml
    │   ├── as_metavariable2.py
    │   ├── as_metavariable2.yaml
    │   ├── assign_in_cond_expr_cpp.cpp
    │   ├── assign_in_cond_expr_cpp.yaml
    │   ├── attributes_match_multiple.php
    │   ├── attributes_match_multiple.yaml
    │   ├── bitwise_metavar_compare.jl
    │   ├── bitwise_metavar_compare.yaml
    │   ├── c_array_inits.c
    │   ├── c_array_inits.yaml
    │   ├── capture_group_unification.py
    │   ├── capture_group_unification.yaml
    │   ├── cast_symbol_prop.go
    │   ├── cast_symbol_prop.yaml
    │   ├── compare-exposed-port.dockerfile
    │   ├── compare-exposed-port.yaml
    │   ├── cp_lambda.cpp
    │   ├── cp_lambda.yaml
    │   ├── cp_mults.py
    │   ├── cp_mults.yaml
    │   ├── cp_private_class_attr.java
    │   ├── cp_private_class_attr.yaml
    │   ├── cp_private_class_attr1.java
    │   ├── cp_private_class_attr1.yaml
    │   ├── cp_private_class_attr2.java
    │   ├── cp_private_class_attr2.yaml
    │   ├── cp_private_class_attr3.java
    │   ├── cp_private_class_attr3.yaml
    │   ├── cp_python_and_or.py
    │   ├── cp_python_and_or.yaml
    │   ├── cp_python_strings.py
    │   ├── cp_python_strings.yaml
    │   ├── cp_relevant_rule.js
    │   ├── cp_relevant_rule.yaml
    │   ├── cp_subtraction.go
    │   ├── cp_subtraction.yaml
    │   ├── cp_subtraction1.go
    │   ├── cp_subtraction1.yaml
    │   ├── cpp_array_inits.cpp
    │   ├── cpp_array_inits.yaml
    │   ├── ctor_cpp.cpp
    │   ├── ctor_cpp.yaml
    │   ├── date_comparison.py
    │   ├── date_comparison.yaml
    │   ├── decorated-field.ts
    │   ├── decorated-field.yaml
    │   ├── decorated_field_pattern.ts
    │   ├── decorated_field_pattern.yaml
    │   ├── decorated_match.py
    │   ├── decorated_match.yaml
    │   ├── deep_expr_xml.js
    │   ├── deep_expr_xml.yaml
    │   ├── defer-persistent-binding.py
    │   ├── defer-persistent-binding.yaml
    │   ├── df_scala_expr_block.scala
    │   ├── df_scala_expr_block.yaml
    │   ├── different_binding_locations.py
    │   ├── different_binding_locations.yaml
    │   ├── ellipsis_in_case.go
    │   ├── ellipsis_in_case.yaml
    │   ├── ellipsis_metavar_extended_match.py
    │   ├── ellipsis_metavar_extended_match.yaml
    │   ├── ellipsis_metavar_template.js
    │   ├── ellipsis_metavar_template.yaml
    │   ├── ellipsis_stmts_deep.py
    │   ├── ellipsis_stmts_deep.yaml
    │   ├── ellipsis_stmts_deep1.ts
    │   ├── ellipsis_stmts_deep1.yaml
    │   ├── entropy_python.py
    │   ├── entropy_python.yaml
    │   ├── eval_not_in.py
    │   ├── eval_not_in.yaml
    │   ├── focus_metavariable.py
    │   ├── focus_metavariable.yaml
    │   ├── focus_metavariable1.py
    │   ├── focus_metavariable1.yaml
    │   ├── focus_metavariable2.py
    │   ├── focus_metavariable2.yaml
    │   ├── for_in_comprehension_metavar.jl
    │   ├── for_in_comprehension_metavar.yaml
    │   ├── generic_dots_mvar.generic
    │   ├── generic_dots_mvar.yaml
    │   ├── generic_ignore_comments.generic
    │   ├── generic_ignore_comments.yaml
    │   ├── generic_multilines.generic
    │   ├── generic_multilines.yaml
    │   ├── generic_single_line_ellipsis.generic
    │   ├── generic_single_line_ellipsis.yaml
    │   ├── inception.yaml
    │   ├── inception.yl
    │   ├── inception2.yaml
    │   ├── inception2.yl
    │   ├── inside.ejs
    │   ├── inside.yaml
    │   ├── inside_test.go
    │   ├── inside_test.yaml
    │   ├── int_binop.go
    │   ├── int_binop.yaml
    │   ├── js_bracket.js
    │   ├── js_bracket.yaml
    │   ├── js_constructor_naming.js
    │   ├── js_constructor_naming.yaml
    │   ├── js_no_ts.yaml
    │   ├── js_no_ts.yl
    │   ├── julia_let_taint.jl
    │   ├── julia_let_taint.yaml
    │   ├── julia_type_parameter.jl
    │   ├── julia_type_parameter.yaml
    │   ├── julia_typed_mvar.jl
    │   ├── julia_typed_mvar.yaml
    │   ├── kotlin_named_ellipsis.kt
    │   ├── kotlin_named_ellipsis.yaml
    │   ├── kotlin_slow_import.kt
    │   ├── kotlin_slow_import.yaml
    │   ├── labeled_propagators.py
    │   ├── labeled_propagators.yaml
    │   ├── macro_arg_taint.rs
    │   ├── macro_arg_taint.yaml
    │   ├── metavar_call.php
    │   ├── metavar_call.yaml
    │   ├── metavar_call_case_insensitive.php
    │   ├── metavar_call_case_insensitive.yaml
    │   ├── metavar_comparison_bitand.java
    │   ├── metavar_comparison_bitand.yaml
    │   ├── metavar_comparison_bitnot.java
    │   ├── metavar_comparison_bitnot.yaml
    │   ├── metavar_comparison_bitor.java
    │   ├── metavar_comparison_bitor.yaml
    │   ├── metavar_comparison_bitxor.java
    │   ├── metavar_comparison_bitxor.yaml
    │   ├── metavar_comparison_constness.c
    │   ├── metavar_comparison_constness.yaml
    │   ├── metavar_comparison_constness1.py
    │   ├── metavar_comparison_constness1.yaml
    │   ├── metavar_comparison_str.go
    │   ├── metavar_comparison_str.yaml
    │   ├── metavar_ellipsis_args_empty.rb
    │   ├── metavar_ellipsis_args_empty.yaml
    │   ├── metavar_ellipsis_xmls.html
    │   ├── metavar_ellipsis_xmls.yaml
    │   ├── metavar_name_imported_entity_java.java
    │   ├── metavar_name_imported_entity_java.yaml
    │   ├── metavar_name_imported_entity_js.js
    │   ├── metavar_name_imported_entity_js.yaml
    │   ├── metavar_pattern_dots_mvar.py
    │   ├── metavar_pattern_dots_mvar.yaml
    │   ├── metavar_pattern_either.js
    │   ├── metavar_pattern_either.yaml
    │   ├── metavar_pattern_fake_toks.php
    │   ├── metavar_pattern_fake_toks.yaml
    │   ├── metavar_pattern_fake_toks1.php
    │   ├── metavar_pattern_fake_toks1.yaml
    │   ├── metavar_pattern_generic.js
    │   ├── metavar_pattern_generic.yaml
    │   ├── metavar_pattern_generic_gibberish.js
    │   ├── metavar_pattern_generic_gibberish.yaml
    │   ├── metavar_pattern_lang.py
    │   ├── metavar_pattern_lang.yaml
    │   ├── metavar_pattern_lang1.py
    │   ├── metavar_pattern_lang1.yaml
    │   ├── metavar_pattern_lang2.generic
    │   ├── metavar_pattern_lang2.yaml
    │   ├── metavar_pattern_name.js
    │   ├── metavar_pattern_name.yaml
    │   ├── metavar_pattern_nested.py
    │   ├── metavar_pattern_nested.yaml
    │   ├── metavar_pattern_nested1.py
    │   ├── metavar_pattern_nested1.yaml
    │   ├── metavar_pattern_not.py
    │   ├── metavar_pattern_not.yaml
    │   ├── metavar_pattern_old_tls_versions.js
    │   ├── metavar_pattern_old_tls_versions.yaml
    │   ├── metavar_pattern_open_redirect.py
    │   ├── metavar_pattern_open_redirect.yaml
    │   ├── metavar_pattern_regex.generic
    │   ├── metavar_pattern_regex.yaml
    │   ├── metavar_pattern_regex1.js
    │   ├── metavar_pattern_regex1.yaml
    │   ├── metavar_pattern_regex2.js
    │   ├── metavar_pattern_regex2.yaml
    │   ├── metavar_pattern_regex3.js
    │   ├── metavar_pattern_regex3.yaml
    │   ├── metavar_pattern_regex4.js
    │   ├── metavar_pattern_regex4.yaml
    │   ├── metavar_regex_and.js
    │   ├── metavar_regex_and.yaml
    │   ├── metavar_regex_capture.py
    │   ├── metavar_regex_capture.yaml
    │   ├── metavar_regex_id.js
    │   ├── metavar_regex_id.yaml
    │   ├── metavar_regex_include.php
    │   ├── metavar_regex_include.yaml
    │   ├── metavar_regex_scope.py
    │   ├── metavar_regex_scope.yaml
    │   ├── metavar_regex_scope2.py
    │   ├── metavar_regex_scope2.yaml
    │   ├── metavar_regex_scope3.py
    │   ├── metavar_regex_scope3.yaml
    │   ├── metavar_regex_scope4.py
    │   ├── metavar_regex_scope4.yaml
    │   ├── metavar_template_type_arg.cpp
    │   ├── metavar_template_type_arg.yaml
    │   ├── metavar_type_decorator_python.py
    │   ├── metavar_type_decorator_python.yaml
    │   ├── metavar_type_func_param_go.go
    │   ├── metavar_type_func_param_go.yaml
    │   ├── metavar_type_func_param_julia.jl
    │   ├── metavar_type_func_param_julia.yaml
    │   ├── metavar_type_multi_types_cpp.cpp
    │   ├── metavar_type_multi_types_cpp.yaml
    │   ├── metavar_type_non_prim_php.php
    │   ├── metavar_type_non_prim_php.yaml
    │   ├── metavar_type_not_csharp.cs
    │   ├── metavar_type_not_csharp.yaml
    │   ├── metavar_type_not_go.go
    │   ├── metavar_type_not_go.yaml
    │   ├── metavar_type_not_java.java
    │   ├── metavar_type_not_java.yaml
    │   ├── metavar_type_not_kotlin.kt
    │   ├── metavar_type_not_kotlin.yaml
    │   ├── metavar_type_not_rust.rs
    │   ├── metavar_type_not_rust.yaml
    │   ├── metavar_type_not_scala.scala
    │   ├── metavar_type_not_scala.yaml
    │   ├── metavar_type_not_typescript.ts
    │   ├── metavar_type_not_typescript.yaml
    │   ├── metavar_type_simple_c.c
    │   ├── metavar_type_simple_c.yaml
    │   ├── metavar_type_simple_cpp.cpp
    │   ├── metavar_type_simple_cpp.yaml
    │   ├── metavar_type_simple_move_on_aptos.move
    │   ├── metavar_type_simple_move_on_aptos.yaml
    │   ├── metavar_type_str_eq_java.java
    │   ├── metavar_type_str_eq_java.yaml
    │   ├── metavar_type_str_eq_php.php
    │   ├── metavar_type_str_eq_php.yaml
    │   ├── metavar_type_str_eq_python.py
    │   ├── metavar_type_str_eq_python.yaml
    │   ├── metavar_unification.json
    │   ├── metavar_unification.yaml
    │   ├── metavariable_name_resolution.java
    │   ├── metavariable_name_resolution.yaml
    │   ├── metavariable_object_type.ts
    │   ├── metavariable_object_type.yaml
    │   ├── metavariable_pattern_either_unif.js
    │   ├── metavariable_pattern_either_unif.yaml
    │   ├── metavariable_pattern_keep_env.js
    │   ├── metavariable_pattern_keep_env.yaml
    │   ├── metavariable_pattern_php.php
    │   ├── metavariable_pattern_php.yaml
    │   ├── metavariable_pattern_recursive_def.js
    │   ├── metavariable_pattern_recursive_def.yaml
    │   ├── misc_deep_metavar.ts
    │   ├── misc_deep_metavar.yaml
    │   ├── misc_eval_nothandle.py
    │   ├── misc_eval_nothandle.yaml
    │   ├── misc_field.js
    │   ├── misc_field.yaml
    │   ├── misc_macro_call.rs
    │   ├── misc_macro_call.yaml
    │   ├── misc_name_and_neg.java
    │   ├── misc_name_and_neg.yaml
    │   ├── misc_php_new.php
    │   ├── misc_php_new.yaml
    │   ├── misc_php_new_taint.php
    │   ├── misc_php_new_taint.yaml
    │   ├── misc_terraform1.tf
    │   ├── misc_terraform1.yaml
    │   ├── misc_tpl_is_php.tpl
    │   ├── misc_tpl_is_php.yaml
    │   ├── misc_var_is_var.js
    │   ├── misc_var_is_var.yaml
    │   ├── mvar_regex_interpolated_var.py
    │   ├── mvar_regex_interpolated_var.yaml
    │   ├── naming_class_attribute.java
    │   ├── naming_class_attribute.yaml
    │   ├── neg_op_lit_equiv.c
    │   ├── neg_op_lit_equiv.yaml
    │   ├── negation_exact.js
    │   ├── negation_exact.yaml
    │   ├── no_fatal_error_with_xxx_equal.js
    │   ├── no_fatal_error_with_xxx_equal.yaml
    │   ├── no_strict_metavar_name_binding.js
    │   ├── no_strict_metavar_name_binding.yaml
    │   ├── non_irrelevant_rule.java
    │   ├── non_irrelevant_rule.yaml
    │   ├── not-under-inside.py
    │   ├── not-under-inside.yaml
    │   ├── not_found_exn.go
    │   ├── not_found_exn.yaml
    │   ├── not_found_exn2.py
    │   ├── not_found_exn2.yaml
    │   ├── numeric_regex_capture_groups.py
    │   ├── numeric_regex_capture_groups.yaml
    │   ├── option_ac_matching.php
    │   ├── option_ac_matching.yaml
    │   ├── option_attr_expr_false.py
    │   ├── option_attr_expr_false.yaml
    │   ├── option_attr_expr_true.py
    │   ├── option_attr_expr_true.yaml
    │   ├── option_attr_expr_true1.py
    │   ├── option_attr_expr_true1.yaml
    │   ├── option_fielddef_assign_arrow.js
    │   ├── option_fielddef_assign_arrow.yaml
    │   ├── option_implicit_exprstmt.dockerfile
    │   ├── option_implicit_exprstmt.yaml
    │   ├── option_symmetric_eq.php
    │   ├── option_symmetric_eq.yaml
    │   ├── option_xml_attr_implicit_ellipsis.js
    │   ├── option_xml_attr_implicit_ellipsis.yaml
    │   ├── option_xml_children_ordered.xml
    │   ├── option_xml_children_ordered.yaml
    │   ├── option_xml_singleton.js
    │   ├── option_xml_singleton.yaml
    │   ├── parse_pattern_as_stmt.ts
    │   ├── parse_pattern_as_stmt.yaml
    │   ├── pattern-either-one-general.py
    │   ├── pattern-either-one-general.yaml
    │   ├── pattern-inside-range.py
    │   ├── pattern-inside-range.yaml
    │   ├── pattern-regex.py
    │   ├── pattern-regex.yaml
    │   ├── pattern-x-1.py
    │   ├── pattern-x-1.yaml
    │   ├── pattern-x-2.py
    │   ├── pattern-x-2.yaml
    │   ├── pattern-x-3.py
    │   ├── pattern-x-3.yaml
    │   ├── pattern-x-4.py
    │   ├── pattern-x-4.yaml
    │   ├── pattern-x-bug.py
    │   ├── pattern-x-bug.yaml
    │   ├── pattern-x.js
    │   ├── pattern-x.yaml
    │   ├── pattern_int.py
    │   ├── pattern_int.yaml
    │   ├── pattern_move_func_signature.move
    │   ├── pattern_move_func_signature.yaml
    │   ├── pattern_move_let_bind.move
    │   ├── pattern_move_let_bind.yaml
    │   ├── pattern_move_standalone_mod_member.move
    │   ├── pattern_move_standalone_mod_member.yaml
    │   ├── pattern_move_struct_member.move
    │   ├── pattern_move_struct_member.yaml
    │   ├── pattern_not_regex.html
    │   ├── pattern_not_regex.yaml
    │   ├── pattern_not_regex1.txt
    │   ├── pattern_not_regex1.yaml
    │   ├── pattern_regex_inside.py
    │   ├── pattern_regex_inside.yaml
    │   ├── persistent_metavariable_pattern.py
    │   ├── persistent_metavariable_pattern.yaml
    │   ├── persistent_metavariable_pattern2.py
    │   ├── persistent_metavariable_pattern2.yaml
    │   ├── placement_new_cpp.cpp
    │   ├── placement_new_cpp.yaml
    │   ├── pow_metavar_comparison.py
    │   ├── pow_metavar_comparison.yaml
    │   ├── prim_obj_init_cpp.cpp
    │   ├── prim_obj_init_cpp.yaml
    │   ├── prometheus_long_duration_promql.test.yaml
    │   ├── prometheus_long_duration_promql.yaml
    │   ├── propagator_labels.py
    │   ├── propagator_labels.yaml
    │   ├── python_fstring_ellipsis.py
    │   ├── python_fstring_ellipsis.yaml
    │   ├── python_fstring_eval.py
    │   ├── python_fstring_eval.yaml
    │   ├── quotes.test.yaml
    │   ├── quotes.yaml
    │   ├── record_any.js
    │   ├── record_any.yaml
    │   ├── record_empty.js
    │   ├── record_empty.yaml
    │   ├── record_field_ellipsis.js
    │   ├── record_field_ellipsis.yaml
    │   ├── record_mixed.js
    │   ├── record_mixed.yaml
    │   ├── record_one_field.js
    │   ├── record_one_field.yaml
    │   ├── record_one_spread.js
    │   ├── record_one_spread.yaml
    │   ├── record_spread_ellipsis.js
    │   ├── record_spread_ellipsis.yaml
    │   ├── redos_bracket_colon.js
    │   ├── redos_bracket_colon.yaml
    │   ├── redos_python.py
    │   ├── redos_python.yaml
    │   ├── regex_capture_groups.py
    │   ├── regex_capture_groups.yaml
    │   ├── regexp_capture_empty_group.gem
    │   ├── regexp_capture_empty_group.yaml
    │   ├── regexp_capture_groups.gem
    │   ├── regexp_capture_groups.yaml
    │   ├── regexp_multiline_mode.txt
    │   ├── regexp_multiline_mode.yaml
    │   ├── regression_uniq_or_ellipsis.go
    │   ├── regression_uniq_or_ellipsis.yaml
    │   ├── relevant_rule_badutf8.js
    │   ├── relevant_rule_badutf8.yaml
    │   ├── resolved_metavariables.js
    │   ├── resolved_metavariables.yaml
    │   ├── rule_extensions.py
    │   ├── rule_extensions.yaml
    │   ├── rust_macro_token_args.rs
    │   ├── rust_macro_token_args.yaml
    │   ├── settings.js
    │   ├── settings.yaml
    │   ├── severity_critical.py
    │   ├── severity_critical.yaml
    │   ├── skip_list.txt
    │   ├── spacegrep_metavarbug.dockerfile
    │   ├── spacegrep_metavarbug.yaml
    │   ├── strict_metavar_name_binding.js
    │   ├── strict_metavar_name_binding.yaml
    │   ├── string_in_comparison.py
    │   ├── string_in_comparison.yaml
    │   ├── string_mvar_julia.jl
    │   ├── string_mvar_julia.yaml
    │   ├── string_vs_char_ptr_cpp.cpp
    │   ├── string_vs_char_ptr_cpp.yaml
    │   ├── struct_tags.go
    │   ├── struct_tags.yaml
    │   ├── swift_lambda_taint.swift
    │   ├── swift_lambda_taint.yaml
    │   ├── sym_prop_chain.py
    │   ├── sym_prop_chain.yaml
    │   ├── sym_prop_class_attr.java
    │   ├── sym_prop_class_attr.yaml
    │   ├── sym_prop_decorator.py
    │   ├── sym_prop_decorator.yaml
    │   ├── sym_prop_deep.java
    │   ├── sym_prop_deep.yaml
    │   ├── sym_prop_exp.js
    │   ├── sym_prop_exp.yaml
    │   ├── sym_prop_exp_no_propagate.js
    │   ├── sym_prop_exp_no_propagate.yaml
    │   ├── sym_prop_explosion.js
    │   ├── sym_prop_explosion.yaml
    │   ├── sym_prop_lambda.py
    │   ├── sym_prop_lambda.yaml
    │   ├── sym_prop_lhs_exp.py
    │   ├── sym_prop_lhs_exp.yaml
    │   ├── sym_prop_merge.py
    │   ├── sym_prop_merge.yaml
    │   ├── sym_prop_merge1.java
    │   ├── sym_prop_merge1.yaml
    │   ├── sym_prop_merge2.java
    │   ├── sym_prop_merge2.yaml
    │   ├── sym_prop_new.java
    │   ├── sym_prop_new.yaml
    │   ├── sym_prop_no_cycle.py
    │   ├── sym_prop_no_cycle.yaml
    │   ├── sym_prop_no_cycle1.js
    │   ├── sym_prop_no_cycle1.yaml
    │   ├── sym_prop_no_merge.py
    │   ├── sym_prop_no_merge.yaml
    │   ├── sym_prop_no_merge1.go
    │   ├── sym_prop_no_merge1.yaml
    │   ├── sym_prop_no_merge2.py
    │   ├── sym_prop_no_merge2.yaml
    │   ├── sym_prop_non_constant_exp.js
    │   ├── sym_prop_non_constant_exp.yaml
    │   ├── sym_prop_non_literal.java
    │   ├── sym_prop_non_literal.yaml
    │   ├── sym_prop_open_redirect.py
    │   ├── sym_prop_open_redirect.yaml
    │   ├── sym_prop_python_with.py
    │   ├── sym_prop_python_with.yaml
    │   ├── sym_prop_python_with1.py
    │   ├── sym_prop_python_with1.yaml
    │   ├── sym_prop_react.js
    │   ├── sym_prop_react.yaml
    │   ├── sym_prop_record.js
    │   ├── sym_prop_record.yaml
    │   ├── sym_prop_redundancy.py
    │   ├── sym_prop_redundancy.yaml
    │   ├── sym_prop_string_eq.py
    │   ├── sym_prop_string_eq.yaml
    │   ├── taint-general-source-sink.js
    │   ├── taint-general-source-sink.yaml
    │   ├── taint_array.py
    │   ├── taint_array.yaml
    │   ├── taint_assign_cleans_shape.js
    │   ├── taint_assign_cleans_shape.yaml
    │   ├── taint_assign_record.ts
    │   ├── taint_assign_record.yaml
    │   ├── taint_assign_record1.ts
    │   ├── taint_assign_record1.yaml
    │   ├── taint_assign_record2.js
    │   ├── taint_assign_record2.yaml
    │   ├── taint_assume_safe_booleans.py
    │   ├── taint_assume_safe_booleans.yaml
    │   ├── taint_assume_safe_booleans1.java
    │   ├── taint_assume_safe_booleans1.yaml
    │   ├── taint_assume_safe_funcs.php
    │   ├── taint_assume_safe_funcs.yaml
    │   ├── taint_assume_safe_indexes.py
    │   ├── taint_assume_safe_indexes.yaml
    │   ├── taint_assume_safe_numbers.py
    │   ├── taint_assume_safe_numbers.yaml
    │   ├── taint_assume_safe_numbers1.java
    │   ├── taint_assume_safe_numbers1.yaml
    │   ├── taint_assume_safe_numbers2.php
    │   ├── taint_assume_safe_numbers2.yaml
    │   ├── taint_assume_safe_numbers3.java
    │   ├── taint_assume_safe_numbers3.yaml
    │   ├── taint_async.py
    │   ├── taint_async.yaml
    │   ├── taint_basic.py
    │   ├── taint_basic.yaml
    │   ├── taint_best_fit_sink.py
    │   ├── taint_best_fit_sink.yaml
    │   ├── taint_best_fit_sink1.php
    │   ├── taint_best_fit_sink1.yaml
    │   ├── taint_best_fit_sink10.js
    │   ├── taint_best_fit_sink10.yaml
    │   ├── taint_best_fit_sink2.py
    │   ├── taint_best_fit_sink2.yaml
    │   ├── taint_best_fit_sink3.py
    │   ├── taint_best_fit_sink3.yaml
    │   ├── taint_best_fit_sink4.php
    │   ├── taint_best_fit_sink4.yaml
    │   ├── taint_best_fit_sink5.java
    │   ├── taint_best_fit_sink5.yaml
    │   ├── taint_best_fit_sink6.java
    │   ├── taint_best_fit_sink6.yaml
    │   ├── taint_best_fit_sink7.js
    │   ├── taint_best_fit_sink7.yaml
    │   ├── taint_best_fit_sink8.py
    │   ├── taint_best_fit_sink8.yaml
    │   ├── taint_best_fit_sink9.java
    │   ├── taint_best_fit_sink9.yaml
    │   ├── taint_by_side_effect_lhs.py
    │   ├── taint_by_side_effect_lhs.yaml
    │   ├── taint_clean_in_try_no_finally.py
    │   ├── taint_clean_in_try_no_finally.yaml
    │   ├── taint_control.py
    │   ├── taint_control.yaml
    │   ├── taint_cpp_for_each.cpp
    │   ├── taint_cpp_for_each.yaml
    │   ├── taint_cpp_ptr_field.cpp
    │   ├── taint_cpp_ptr_field.yaml
    │   ├── taint_cpp_ptr_field1.cpp
    │   ├── taint_cpp_ptr_field1.yaml
    │   ├── taint_decl_in_if_cond.cpp
    │   ├── taint_decl_in_if_cond.yaml
    │   ├── taint_decl_in_while_cond.cpp
    │   ├── taint_decl_in_while_cond.yaml
    │   ├── taint_exact_sanitizer.py
    │   ├── taint_exact_sanitizer.yaml
    │   ├── taint_exact_sources.py
    │   ├── taint_exact_sources.yaml
    │   ├── taint_exception.py
    │   ├── taint_exception.yaml
    │   ├── taint_expr_in_type.cpp
    │   ├── taint_expr_in_type.yaml
    │   ├── taint_expr_in_type_labels.cpp
    │   ├── taint_expr_in_type_labels.yaml
    │   ├── taint_field_sensitive1.js
    │   ├── taint_field_sensitive1.yaml
    │   ├── taint_field_sensitive2.js
    │   ├── taint_field_sensitive2.yaml
    │   ├── taint_field_sensitive3.js
    │   ├── taint_field_sensitive3.yaml
    │   ├── taint_field_sensitive4.js
    │   ├── taint_field_sensitive4.yaml
    │   ├── taint_field_sensitive5.php
    │   ├── taint_field_sensitive5.yaml
    │   ├── taint_field_sensitive6.py
    │   ├── taint_field_sensitive6.yaml
    │   ├── taint_field_sensitive7.py
    │   ├── taint_field_sensitive7.yaml
    │   ├── taint_field_sensitive8.py
    │   ├── taint_field_sensitive8.yaml
    │   ├── taint_final_globals.java
    │   ├── taint_final_globals.yaml
    │   ├── taint_final_globals1.js
    │   ├── taint_final_globals1.yaml
    │   ├── taint_final_globals2.java
    │   ├── taint_final_globals2.yaml
    │   ├── taint_flask.py
    │   ├── taint_flask.yaml
    │   ├── taint_foreach.java
    │   ├── taint_foreach.yaml
    │   ├── taint_foreach1.scala
    │   ├── taint_foreach1.yaml
    │   ├── taint_get_set_sensitivity.java
    │   ├── taint_get_set_sensitivity.yaml
    │   ├── taint_get_set_sensitivity1.java
    │   ├── taint_get_set_sensitivity1.yaml
    │   ├── taint_if_cond_sink.c
    │   ├── taint_if_cond_sink.yaml
    │   ├── taint_implicit_return.rs
    │   ├── taint_implicit_return.yaml
    │   ├── taint_imported_func.py
    │   ├── taint_imported_func.yaml
    │   ├── taint_iterator_values.js
    │   ├── taint_iterator_values.yaml
    │   ├── taint_labels.py
    │   ├── taint_labels.yaml
    │   ├── taint_labels1.py
    │   ├── taint_labels1.yaml
    │   ├── taint_labels2.py
    │   ├── taint_labels2.yaml
    │   ├── taint_labels3.py
    │   ├── taint_labels3.yaml
    │   ├── taint_labels4.py
    │   ├── taint_labels4.yaml
    │   ├── taint_labels5.py
    │   ├── taint_labels5.yaml
    │   ├── taint_labels6.py
    │   ├── taint_labels6.yaml
    │   ├── taint_labels7.py
    │   ├── taint_labels7.yaml
    │   ├── taint_labels_empty.go
    │   ├── taint_labels_empty.yaml
    │   ├── taint_labels_rec.rs
    │   ├── taint_labels_rec.yaml
    │   ├── taint_lambda.js
    │   ├── taint_lambda.yaml
    │   ├── taint_lambda1.java
    │   ├── taint_lambda1.yaml
    │   ├── taint_lambda2.js
    │   ├── taint_lambda2.yaml
    │   ├── taint_lambda3.js
    │   ├── taint_lambda3.yaml
    │   ├── taint_lambda4.ts
    │   ├── taint_lambda4.yaml
    │   ├── taint_lambda_cpp.cpp
    │   ├── taint_lambda_cpp.yaml
    │   ├── taint_match_on_source.py
    │   ├── taint_match_on_source.yaml
    │   ├── taint_nested_record_pattern.js
    │   ├── taint_nested_record_pattern.yaml
    │   ├── taint_no_builtin_props.py
    │   ├── taint_no_builtin_props.yaml
    │   ├── taint_no_builtin_props1.py
    │   ├── taint_no_builtin_props1.yaml
    │   ├── taint_no_builtin_props2.py
    │   ├── taint_no_builtin_props2.yaml
    │   ├── taint_no_builtin_props3.cpp
    │   ├── taint_no_builtin_props3.yaml
    │   ├── taint_non_exact_sink.py
    │   ├── taint_non_exact_sink.yaml
    │   ├── taint_not_conflicting_sanitizer.php
    │   ├── taint_not_conflicting_sanitizer.yaml
    │   ├── taint_not_conflicting_sanitizer1.php
    │   ├── taint_not_conflicting_sanitizer1.yaml
    │   ├── taint_obj_fields.kt
    │   ├── taint_obj_fields.yaml
    │   ├── taint_object_destructure.js
    │   ├── taint_object_destructure.yaml
    │   ├── taint_object_funcdef.js
    │   ├── taint_object_funcdef.yaml
    │   ├── taint_object_funcdef_1.ts
    │   ├── taint_object_funcdef_1.yaml
    │   ├── taint_param_default.py
    │   ├── taint_param_default.yaml
    │   ├── taint_param_default1.py
    │   ├── taint_param_default1.yaml
    │   ├── taint_param_pattern.rs
    │   ├── taint_param_pattern.yaml
    │   ├── taint_param_source.py
    │   ├── taint_param_source.yaml
    │   ├── taint_param_source1.js
    │   ├── taint_param_source1.yaml
    │   ├── taint_param_source2.ts
    │   ├── taint_param_source2.yaml
    │   ├── taint_param_source3.js
    │   ├── taint_param_source3.yaml
    │   ├── taint_propagator.py
    │   ├── taint_propagator.yaml
    │   ├── taint_propagator1.js
    │   ├── taint_propagator1.yaml
    │   ├── taint_propagator2.py
    │   ├── taint_propagator2.yaml
    │   ├── taint_propagator3.py
    │   ├── taint_propagator3.yaml
    │   ├── taint_propagator4.java
    │   ├── taint_propagator4.yaml
    │   ├── taint_propagator_by_side_effect_false.php
    │   ├── taint_propagator_by_side_effect_false.yaml
    │   ├── taint_propagator_by_side_effect_false1.php
    │   ├── taint_propagator_by_side_effect_false1.yaml
    │   ├── taint_propagator_lambda.java
    │   ├── taint_propagator_lambda.yaml
    │   ├── taint_propagator_lambda1.py
    │   ├── taint_propagator_lambda1.yaml
    │   ├── taint_propagator_lambda2.js
    │   ├── taint_propagator_lambda2.yaml
    │   ├── taint_react.js
    │   ├── taint_react.yaml
    │   ├── taint_return_expr.scala
    │   ├── taint_return_expr.yaml
    │   ├── taint_return_expr_fn_sink.scala
    │   ├── taint_return_expr_fn_sink.yaml
    │   ├── taint_ruby_concat.rb
    │   ├── taint_ruby_concat.yaml
    │   ├── taint_ruby_hash_elem_ref.rb
    │   ├── taint_ruby_hash_elem_ref.yaml
    │   ├── taint_ruby_if_expr.rb
    │   ├── taint_ruby_if_expr.yaml
    │   ├── taint_rust_returns.rs
    │   ├── taint_rust_returns.yaml
    │   ├── taint_safe_comparisons.py
    │   ├── taint_safe_comparisons.yaml
    │   ├── taint_sanitizer_var.py
    │   ├── taint_sanitizer_var.yaml
    │   ├── taint_single_variable_source.js
    │   ├── taint_single_variable_source.yaml
    │   ├── taint_source_var.py
    │   ├── taint_source_var.yaml
    │   ├── taint_source_var1.py
    │   ├── taint_source_var1.yaml
    │   ├── taint_splat.py
    │   ├── taint_splat.yaml
    │   ├── taint_spread_record_big.js
    │   ├── taint_spread_record_big.yaml
    │   ├── taint_spread_record_small.js
    │   ├── taint_spread_record_small.yaml
    │   ├── taint_this.js
    │   ├── taint_this.yaml
    │   ├── taint_this1.java
    │   ├── taint_this1.yaml
    │   ├── taint_typestate.py
    │   ├── taint_typestate.yaml
    │   ├── taint_typestate1.py
    │   ├── taint_typestate1.yaml
    │   ├── taint_typestate2.cpp
    │   ├── taint_typestate2.yaml
    │   ├── taint_typestate3.cpp
    │   ├── taint_typestate3.yaml
    │   ├── taint_typestate4.cpp
    │   ├── taint_typestate4.yaml
    │   ├── taint_typestate5.cpp
    │   ├── taint_typestate5.yaml
    │   ├── taint_unify_mvars.js
    │   ├── taint_unify_mvars.yaml
    │   ├── taint_union_mvars.js
    │   ├── taint_union_mvars.yaml
    │   ├── taint_unsafe_block.rs
    │   ├── taint_unsafe_block.yaml
    │   ├── taint_wo_side_effects.php
    │   ├── taint_wo_side_effects.yaml
    │   ├── taint_wo_side_effects1.php
    │   ├── taint_wo_side_effects1.yaml
    │   ├── taint_wo_side_effects2.php
    │   ├── taint_wo_side_effects2.yaml
    │   ├── tainted-file-path.java
    │   ├── tainted-file-path.yaml
    │   ├── tainted-filename.php
    │   ├── tainted-filename.yaml
    │   ├── tainted_pattern_lval.rs
    │   ├── tainted_pattern_lval.yaml
    │   ├── terraform_block_sink.tf
    │   ├── terraform_block_sink.yaml
    │   ├── terraform_coercions.tf
    │   ├── terraform_coercions.yaml
    │   ├── terraform_metavariable.tf
    │   ├── terraform_metavariable.yaml
    │   ├── terraform_mvar_regex_interpolated_var.tf
    │   ├── terraform_mvar_regex_interpolated_var.yaml
    │   ├── terraform_nested_yaml.tf
    │   ├── terraform_nested_yaml.yaml
    │   ├── top_level_sym_prop.py
    │   ├── top_level_sym_prop.yaml
    │   ├── ts_decorated_async_property.ts
    │   ├── ts_decorated_async_property.yaml
    │   ├── ts_decorated_static_property.ts
    │   ├── ts_decorated_static_property.yaml
    │   ├── typed_metavar_metavar_regex.go
    │   ├── typed_metavar_metavar_regex.yaml
    │   ├── typed_metavar_not.java
    │   ├── typed_metavar_not.yaml
    │   ├── typed_metavar_not_rust.rs
    │   ├── typed_metavar_not_rust.yaml
    │   ├── unicode_string.py
    │   ├── unicode_string.yaml
    │   ├── vardef_assign_false.js
    │   ├── vardef_assign_false.yaml
    │   ├── vardef_assign_false1.js
    │   ├── vardef_assign_false1.yaml
    │   ├── vardef_assign_true.js
    │   ├── vardef_assign_true.yaml
    │   ├── vardef_assign_true1.js
    │   ├── vardef_assign_true1.yaml
    │   ├── vardef_assign_true2.js
    │   ├── vardef_assign_true2.yaml
    │   ├── whole_file.tf
    │   ├── whole_file.yaml
    │   ├── xml_metavar_comp.xml
    │   ├── xml_metavar_comp.yaml
    │   ├── xml_metavar_comp2.xml
    │   ├── xml_metavar_comp2.yaml
    │   ├── yaml_metavariable_pattern.test.yaml
    │   ├── yaml_metavariable_pattern.yaml
    │   ├── yaml_on_yaml.test.yaml
    │   └── yaml_on_yaml.yaml
    ├── rules_error_recovery
    │   ├── README.md
    │   ├── lines_of_file_outofbound.tf
    │   └── lines_of_file_outofbound.yaml
    ├── rules_v2
    │   ├── anywhere_global.py
    │   ├── anywhere_global.yaml
    │   ├── anywhere_include.c
    │   ├── anywhere_include.yaml
    │   ├── anywhere_metavar.py
    │   ├── anywhere_metavar.yaml
    │   ├── decorator_order_matters.py
    │   ├── decorator_order_matters.yaml
    │   ├── decorator_sublist_is_ok.py
    │   ├── decorator_sublist_is_ok.yaml
    │   ├── decorator_subsequence_is_ok.py
    │   ├── decorator_subsequence_is_ok.yaml
    │   ├── decorator_unordered_ok_when_rule_option_false.py
    │   ├── decorator_unordered_ok_when_rule_option_false.yaml
    │   ├── go_grouped_arguments.go
    │   ├── go_grouped_arguments.yaml
    │   ├── keyword_any_order.java
    │   ├── keyword_any_order.yaml
    │   ├── keyword_order_matters.java
    │   ├── keyword_order_matters.yaml
    │   ├── metavar_analysis.cs
    │   ├── metavar_analysis.yaml
    │   ├── metavar_cond.py
    │   ├── metavar_cond.yaml
    │   ├── metavar_cond2.py
    │   ├── metavar_cond2.yaml
    │   ├── metavar_cond_octal.go
    │   ├── metavar_cond_octal.yaml
    │   ├── metavar_ellipsis_param.go
    │   ├── metavar_ellipsis_param.yaml
    │   ├── metavar_regex.py
    │   ├── metavar_regex.yaml
    │   ├── metavar_type_multi_types_rule20_cpp.cpp
    │   ├── metavar_type_multi_types_rule20_cpp.yaml
    │   ├── metavar_type_rule20.java
    │   ├── metavar_type_rule20.yaml
    │   ├── multiple_autofix.fixed
    │   ├── multiple_autofix.py
    │   ├── multiple_autofix.yaml
    │   ├── negation_ajin.py
    │   ├── negation_ajin.yaml
    │   ├── new_syntax.py
    │   ├── new_syntax.yaml
    │   ├── new_syntax_taint.py
    │   ├── new_syntax_taint.yaml
    │   ├── new_syntax_taint_no_mode.py
    │   ├── new_syntax_taint_no_mode.yaml
    │   ├── r2c_was_here.java
    │   ├── r2c_was_here.yaml
    │   ├── r2c_was_here_again.cpp
    │   ├── r2c_was_here_again.yaml
    │   ├── regexp.py
    │   └── regexp.yaml
    ├── semgrep-core-e2e
    │   ├── rules
    │   │   └── basic.yaml
    │   ├── targets.json
    │   └── targets
    │   │   └── basic.py
    ├── semgrep_output
    │   ├── cli_output
    │   │   ├── cli_output1.json
    │   │   ├── cli_test_basic.TODO
    │   │   ├── cli_test_yaml_language.TODO
    │   │   ├── debug.TODO
    │   │   ├── dependency_aware.json
    │   │   ├── fix_regexp.json
    │   │   ├── invalid_rule.json
    │   │   ├── no_fingerprint.TODO
    │   │   ├── optional_offset.TODO
    │   │   ├── rule_id_and_spans.json
    │   │   ├── semgrep_ignore_report.TODO
    │   │   ├── skipped.json
    │   │   └── timing.json
    │   ├── core_output
    │   │   └── core_output1.json
    │   └── scans_output
    │   │   └── findings.json
    ├── snapshots
    │   └── semgrep-core
    │   │   ├── 004d00198550
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 06d4c075c20a
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 0c4198671b7b
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 121e13bda1dc
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 170b2dae3013
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 17eb04f5c4ea
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 1b426baf9922
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 201a11c8d7a5
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 2e75b85cd1f4
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 340d1149ba01
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── 36becc511b8a
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 3ae892ddf988
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 3e5448ffb606
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── 3e63db713cdd
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 3f2dd27915fc
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 4148713a0e06
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 46b94c9a33b5
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 4823773fc66b
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── 4b1e1d216d04
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 4d3e6e61c9c2
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 4f06f5cf1f9b
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 507d831131cf
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 551857e0cb97
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 5722008e9775
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 58a845e402fc
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 597fbcbc7082
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 64b671b03f84
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 67608f448702
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── 68ddf7069d0b
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 6f1b4fa82de6
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 7087eb11f7d3
    │   │       ├── name
    │   │       └── stderr
    │   │   ├── 745a04125f26
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 7953814bd0ae
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── 795458d57912
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 7c91655c3e4b
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 8128ddf1251b
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 8bdf63abd0d3
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 8ce33c1fb551
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 917142b5cdf9
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 928cede2578e
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 94a23aa13ed6
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── 958abd4d536d
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── 97c4439f0310
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── 98f80064bcd4
    │   │       ├── name
    │   │       └── stderr
    │   │   ├── 9c5e0deddeba
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── a0283f7165eb
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── a5f8cca91ee4
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── a76b488ec431
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── a7a68e5155cd
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── aaadc9ccf052
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── b52c24bc6a7d
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── b5c5c5717af7
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── bc2f173cbf29
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── bc375a75a0d3
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── bd35707c2732
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── bf39e85cfedd
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── c293d4dbc560
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── c298e1785db2
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── c49a2132d28d
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── c6333bc90e8c
    │   │       ├── name
    │   │       └── stdxxx
    │   │   ├── cf1960f4121b
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── d24e844bc5d2
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── d5c73b8c6b15
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── d6459a008a60
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── d7bb68fbd2a0
    │   │       ├── name
    │   │       └── stderr
    │   │   ├── d7d1151b7841
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── dde92d39ed2e
    │   │       ├── name
    │   │       └── stderr
    │   │   ├── e3c19e7fa9c7
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── e4610a95c51e
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── e5471538e004
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── ec0b6d8d3aac
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── ecc9e564ee45
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── f0c91a5124a2
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── f651b86e22c7
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── f76e4684cf69
    │   │       ├── name
    │   │       └── stdout
    │   │   ├── f7c140d27c6f
    │   │       ├── name
    │   │       └── stdout
    │   │   └── fc0ccdecb184
    │   │       ├── name
    │   │       └── stdout
    ├── syntax_v2
    │   ├── anywhere.yaml
    │   ├── depends_on.yaml
    │   ├── depends_on_either.yaml
    │   ├── extract.yaml
    │   ├── fix.yaml
    │   ├── labeled_propagators.yaml
    │   ├── match.yaml
    │   ├── metadata.yaml
    │   ├── metadata_supply_chain.yaml
    │   ├── min_version.yaml
    │   ├── not_formula.yaml
    │   ├── options.yaml
    │   ├── options_aliengrep.yaml
    │   ├── options_comments.yaml
    │   ├── regexp_nomatch.yaml
    │   ├── severity_new.yaml
    │   ├── steps.yaml
    │   ├── taint.yaml
    │   ├── taint_labels.yaml
    │   ├── validators.yaml
    │   ├── where_comparison.yaml
    │   ├── where_formula.yaml
    │   ├── where_formula_language.yaml
    │   ├── where_regex.yaml
    │   ├── where_regex_constprop.yaml
    │   ├── where_type.yaml
    │   └── where_types.yaml
    ├── taint_maturity
    │   ├── c
    │   │   ├── taint_if.c
    │   │   ├── taint_if.yaml
    │   │   ├── taint_seq.c
    │   │   └── taint_seq.yaml
    │   ├── csharp
    │   │   ├── taint_if.cs
    │   │   ├── taint_if.yaml
    │   │   ├── taint_seq.cs
    │   │   └── taint_seq.yaml
    │   ├── java
    │   │   ├── taint_if.java
    │   │   ├── taint_if.yaml
    │   │   ├── taint_seq.java
    │   │   └── taint_seq.yaml
    │   ├── php
    │   │   ├── taint_if.php
    │   │   ├── taint_if.yaml
    │   │   ├── taint_seq.php
    │   │   └── taint_seq.yaml
    │   └── python
    │   │   ├── taint_if.py
    │   │   ├── taint_if.yaml
    │   │   ├── taint_seq.py
    │   │   └── taint_seq.yaml
    ├── tainting_rules
    │   ├── go
    │   │   ├── command-injection.go
    │   │   ├── command-injection.yaml
    │   │   ├── continue.go
    │   │   ├── continue.yaml
    │   │   ├── goto_dead_code.go
    │   │   ├── goto_dead_code.yaml
    │   │   ├── make.go
    │   │   ├── make.yaml
    │   │   ├── nobuiltin.go
    │   │   ├── nobuiltin.yaml
    │   │   ├── switch.go
    │   │   ├── switch.yaml
    │   │   ├── switch_no_scrutinee.go
    │   │   ├── switch_no_scrutinee.yaml
    │   │   ├── token_labels.go
    │   │   ├── token_labels.yaml
    │   │   ├── zip-traversal.go
    │   │   └── zip-traversal.yaml
    │   ├── java
    │   │   ├── tainted_args.java
    │   │   ├── tainted_args.yaml
    │   │   ├── try_return.java
    │   │   └── try_return.yaml
    │   ├── js
    │   │   ├── await.js
    │   │   ├── await.yaml
    │   │   ├── call_chain.js
    │   │   ├── call_chain.yaml
    │   │   ├── eslint_obj_inj.js
    │   │   ├── eslint_obj_inj.yaml
    │   │   ├── everything_source.js
    │   │   ├── everything_source.yaml
    │   │   ├── everything_source1.js
    │   │   ├── everything_source1.yaml
    │   │   ├── metavar_eq_conditional.js
    │   │   ├── metavar_eq_conditional.yaml
    │   │   ├── metavar_eq_simple.js
    │   │   ├── metavar_eq_simple.yaml
    │   │   ├── nested_function.js
    │   │   ├── nested_function.yaml
    │   │   ├── sanitized_by_side_effect.js
    │   │   ├── sanitized_by_side_effect.yaml
    │   │   ├── simpl_nodejs_eval.js
    │   │   ├── simpl_nodejs_eval.yaml
    │   │   ├── throw.js
    │   │   └── throw.yaml
    │   ├── php
    │   │   ├── break.php
    │   │   ├── break.yaml
    │   │   ├── echo.php
    │   │   ├── echo.yaml
    │   │   ├── lval_var_sink.php
    │   │   ├── lval_var_sink.yaml
    │   │   ├── no_duplicate_submatches.php
    │   │   ├── no_duplicate_submatches.yaml
    │   │   ├── switch.php
    │   │   ├── switch.yaml
    │   │   ├── ternary.php
    │   │   └── ternary.yaml
    │   ├── python
    │   │   ├── break.py
    │   │   ├── break.yaml
    │   │   ├── fake_tokens.py
    │   │   ├── fake_tokens.yaml
    │   │   ├── raise_from.py
    │   │   ├── raise_from.yaml
    │   │   ├── raise_no_args.py
    │   │   ├── raise_no_args.yaml
    │   │   ├── simpl_django_redirect.py
    │   │   ├── simpl_django_redirect.yaml
    │   │   ├── sink_param.py
    │   │   ├── sink_param.yaml
    │   │   ├── sink_return.py
    │   │   ├── sink_return.yaml
    │   │   ├── source_param.py
    │   │   ├── source_param.yaml
    │   │   ├── tainting_top.py
    │   │   ├── tainting_top.yaml
    │   │   ├── try_finally.py
    │   │   ├── try_finally.yaml
    │   │   ├── try_finally1.py
    │   │   ├── try_finally1.yaml
    │   │   ├── try_raise.py
    │   │   └── try_raise.yaml
    │   ├── ruby
    │   │   ├── switch.rb
    │   │   └── switch.yaml
    │   ├── scala
    │   │   ├── new_object_sink.scala
    │   │   └── new_object_sink.yaml
    │   └── ts
    │   │   ├── source_exp.ts
    │   │   └── source_exp.yaml
    ├── typing
    │   ├── BasicParam.java
    │   ├── ClassFields.java
    │   ├── EqVarCmp.java
    │   ├── FuncParam.go
    │   ├── PropVarDef.go
    │   ├── StaticVarDef.go
    │   └── VarDef.java
    └── windows
    │   ├── readme.txt
    │   ├── rules.yml
    │   └── test.py
└── tools
    ├── languages_dumper
        ├── Main.ml
        └── dune
    ├── ojsonnet
        ├── Main.ml
        └── dune
    └── otarzan
        ├── README.md
        ├── bin
            ├── Main.ml
            └── dune
        └── lib
            ├── Conf.ml
            ├── Parse.ml
            ├── Parse.mli
            ├── Print.ml
            ├── Print.mli
            ├── Run.ml
            ├── Test_otarzan.ml
            └── dune


/TCB/CapStdlib.ml:
--------------------------------------------------------------------------------
1 | let exit _cap = Stdlib.exit
2 | 


--------------------------------------------------------------------------------
/bin:
--------------------------------------------------------------------------------
1 | _build/install/default/bin


--------------------------------------------------------------------------------
/cli/LICENSE:
--------------------------------------------------------------------------------
1 | ../LICENSE


--------------------------------------------------------------------------------
/cli/src/semdep/external/parsy/version.py:
--------------------------------------------------------------------------------
1 | __version__ = "2.0"
2 | 


--------------------------------------------------------------------------------
/cli/src/semgrep/__init__.py:
--------------------------------------------------------------------------------
1 | __VERSION__ = "1.128.0"
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e-other/rules:
--------------------------------------------------------------------------------
1 | ../e2e/rules


--------------------------------------------------------------------------------
/cli/tests/default/e2e-other/targets:
--------------------------------------------------------------------------------
1 | ../e2e/targets


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/basic/simple_python_no_extension:
--------------------------------------------------------------------------------
1 | hello
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/deduplication/deduplication.py:
--------------------------------------------------------------------------------
1 | foo(1,2)


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/generic/generic.txt:
--------------------------------------------------------------------------------
1 | foobar


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/js/sca.js:
--------------------------------------------------------------------------------
1 | x = bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/monorepo/build.js:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/monorepo/webapp1/app.js:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/monorepo/webapp2/app.js:
--------------------------------------------------------------------------------
1 | good()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/multi-dep-rule/bad.js:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/pnpm-error-key/foo.js:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/pnpm-workspaces/foo.js:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/pnpm/foo.js:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/poetry/sca-poetry.py:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/requirement/foo.py:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/requirement_pip/foo.py:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/requirements/foo.py:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/requirements3/foo.py:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/requirements_folder/foo.py:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/requirements_pip/foo.py:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/ruby/sca.rb:
--------------------------------------------------------------------------------
1 | x = bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/rust/sca.rs:
--------------------------------------------------------------------------------
1 | let x = bad();
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/dependency_aware/yarn2/foo.js:
--------------------------------------------------------------------------------
1 | bad()


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores/.gitignore:
--------------------------------------------------------------------------------
1 | bad/


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores/find.js:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores/ignore.min.js:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores/ignore_test.js:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores/ok/find.js:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores/tests/ignore.js:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores_default/.gitignore:
--------------------------------------------------------------------------------
1 | ignore.js


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores_default/find.js:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores_default/ignore.min.js:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/ignores_default/ignore_test.go:
--------------------------------------------------------------------------------
1 | var x = 0 == 0


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/language-filtering/call-f.js:
--------------------------------------------------------------------------------
1 | f()
2 | 
3 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/language-filtering/call-f.py:
--------------------------------------------------------------------------------
1 | f()
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/multilangproj/code.js:
--------------------------------------------------------------------------------
1 | var x = 1+1;
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/per-rule-include/dont-scan-me.py:
--------------------------------------------------------------------------------
1 | f()
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/per-rule-include/scan-me.py:
--------------------------------------------------------------------------------
1 | f()
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/rule_id/hello.txt:
--------------------------------------------------------------------------------
1 | hello
2 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/sort-findings/b.py:
--------------------------------------------------------------------------------
1 | f()
2 | f()
3 | f()
4 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/sort-findings/c.py:
--------------------------------------------------------------------------------
1 | f()
2 | f()
3 | f()
4 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/sort-findings/z/a.py:
--------------------------------------------------------------------------------
1 | f()
2 | f()
3 | 


--------------------------------------------------------------------------------
/cli/tests/default/e2e/targets/version-constraints/x.py:
--------------------------------------------------------------------------------
1 | x = "hello"
2 | 


--------------------------------------------------------------------------------
/interfaces/semgrep_interfaces:
--------------------------------------------------------------------------------
1 | ../cli/src/semgrep/semgrep_interfaces


--------------------------------------------------------------------------------
/languages/regexp/.gitignore:
--------------------------------------------------------------------------------
1 | /Parser.ml
2 | /Parser.mli
3 | 


--------------------------------------------------------------------------------
/libs/collections/tests/Unit_Seq_.mli:
--------------------------------------------------------------------------------
1 | val tests : Testo.t list
2 | 


--------------------------------------------------------------------------------
/libs/commons/UChan.mli:
--------------------------------------------------------------------------------
1 | val with_open_in : Fpath.t -> (Chan.i -> 'a) -> 'a
2 | 


--------------------------------------------------------------------------------
/libs/commons/tests/Unit_Result_.mli:
--------------------------------------------------------------------------------
1 | val tests : Testo.t list
2 | 


--------------------------------------------------------------------------------
/libs/murmur3/Murmur3.mli:
--------------------------------------------------------------------------------
1 | val hash128 : string -> string
2 | 


--------------------------------------------------------------------------------
/libs/profiling/ppx/tests/basic.ml:
--------------------------------------------------------------------------------
1 | let foo a b = a + b [@@profiling]
2 | 


--------------------------------------------------------------------------------
/libs/profiling/ppx/tests/label.ml:
--------------------------------------------------------------------------------
1 | let foo ~a b = a + b [@@profiling]
2 | 


--------------------------------------------------------------------------------
/libs/telemetry/ppx/ppx_tests/label.ml:
--------------------------------------------------------------------------------
1 | let foo ~a b = a + b [@@trace]
2 | 


--------------------------------------------------------------------------------
/perf/bench/dummy/input/dummy/targets/hello.js:
--------------------------------------------------------------------------------
1 | exec("fortune");
2 | 


--------------------------------------------------------------------------------
/perf/bench/dummy/targets/hello.js:
--------------------------------------------------------------------------------
1 | exec("fortune");
2 | 


--------------------------------------------------------------------------------
/perf/bench/dummy/targets/malformed.js:
--------------------------------------------------------------------------------
1 | // malformed js file
2 | )
3 | 


--------------------------------------------------------------------------------
/src/configuring/Rule_options.atd:
--------------------------------------------------------------------------------
1 | ../../interfaces/Rule_options.atd


--------------------------------------------------------------------------------
/src/fixing/tests/Unit_autofix_printer.mli:
--------------------------------------------------------------------------------
1 | val tests : Testo.t list
2 | 


--------------------------------------------------------------------------------
/src/optimizing/Semgrep_prefilter.atd:
--------------------------------------------------------------------------------
1 | ../../interfaces/Semgrep_prefilter.atd


--------------------------------------------------------------------------------
/src/osemgrep/cli_ci/Unit_ci.mli:
--------------------------------------------------------------------------------
1 | val tests : Testo.t list
2 | 


--------------------------------------------------------------------------------
/src/osemgrep/reporting/Gated_data.ml:
--------------------------------------------------------------------------------
1 | let msg = "requires login"
2 | 


--------------------------------------------------------------------------------
/src/osemgrep/reporting/Unit_reporting.mli:
--------------------------------------------------------------------------------
1 | val tests : < > -> Testo.t list
2 | 


--------------------------------------------------------------------------------
/src/parsing/Parsing_stats.atd:
--------------------------------------------------------------------------------
1 | ../../interfaces/Parsing_stats.atd


--------------------------------------------------------------------------------
/src/rule/Language.ml:
--------------------------------------------------------------------------------
1 | ../../interfaces/semgrep_interfaces/Language.ml


--------------------------------------------------------------------------------
/src/rule/Language.mli:
--------------------------------------------------------------------------------
1 | ../../interfaces/semgrep_interfaces/Language.mli


--------------------------------------------------------------------------------
/src/spacegrep/.gitignore:
--------------------------------------------------------------------------------
1 | _build
2 | .merlin
3 | /tmp
4 | 


--------------------------------------------------------------------------------
/src/spacegrep/bin/spacecat:
--------------------------------------------------------------------------------
1 | spacegrep


--------------------------------------------------------------------------------
/src/spacegrep/examples/exec.pat:
--------------------------------------------------------------------------------
1 | exec(...)
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/go-package.pat:
--------------------------------------------------------------------------------
1 | package hacknews
2 | ...
3 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/go-package.url:
--------------------------------------------------------------------------------
1 | https://semgrep.dev/Nxwy/
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/hello.pat:
--------------------------------------------------------------------------------
1 | function ... { ... hello ... }
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/js-optional-chain.doc:
--------------------------------------------------------------------------------
1 | var x = foo?.bar?.baz;
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/js-optional-chain.pat:
--------------------------------------------------------------------------------
1 | foo?.bar
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/my_first_calculator.py.pat:
--------------------------------------------------------------------------------
1 | = 42 "
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/python-from.pat:
--------------------------------------------------------------------------------
1 | $X = 0
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/python-tab.pat:
--------------------------------------------------------------------------------
1 | $X
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/examples/ruby-erb.pat:
--------------------------------------------------------------------------------
1 | "Version": "..."
2 | 


--------------------------------------------------------------------------------
/src/spacegrep/src/test/.ocamlformat-ignore:
--------------------------------------------------------------------------------
1 | Comment.ml
2 | 


--------------------------------------------------------------------------------
/stats/autofix-printing-stats/.gitignore:
--------------------------------------------------------------------------------
1 | tmp
2 | 


--------------------------------------------------------------------------------
/stats/parsing-stats/test-parsing/.gitignore:
--------------------------------------------------------------------------------
1 | /run-all
2 | /run-lang
3 | 


--------------------------------------------------------------------------------
/test:
--------------------------------------------------------------------------------
1 | _build/default/src/tests/test.exe


--------------------------------------------------------------------------------
/tests/TODO/bad.py:
--------------------------------------------------------------------------------
1 | def foo
2 |   return 1
3 | 


--------------------------------------------------------------------------------
/tests/TODO/basic.sgrep:
--------------------------------------------------------------------------------
1 | foo()


--------------------------------------------------------------------------------
/tests/TODO/dots.sgrep:
--------------------------------------------------------------------------------
1 | foo($X, ...);
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/TODO/expr_vs_stmt_metavar.sgrep:
--------------------------------------------------------------------------------
1 | if $X:
2 |   $Y
3 |   $Y
4 | 


--------------------------------------------------------------------------------
/tests/TODO/foo.js:
--------------------------------------------------------------------------------
1 | function foo() {
2 |     foo(1);
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/TODO/global.py:
--------------------------------------------------------------------------------
1 | myglobal = 1
2 | 


--------------------------------------------------------------------------------
/tests/TODO/metavar.sgrep:
--------------------------------------------------------------------------------
1 | foo($X)


--------------------------------------------------------------------------------
/tests/TODO/name_metavar.sgrep:
--------------------------------------------------------------------------------
1 | import $X
2 | 


--------------------------------------------------------------------------------
/tests/TODO/protocol.sgrep:
--------------------------------------------------------------------------------
1 | $V = $F(...)
2 | ...
3 | $G(..., $V, ...)
4 | 


--------------------------------------------------------------------------------
/tests/TODO/stmt.sgrep:
--------------------------------------------------------------------------------
1 | if $X:
2 |    $Y
3 | 
4 | 
5 | 
6 | 


--------------------------------------------------------------------------------
/tests/TODO/stmt_basic.sgrep:
--------------------------------------------------------------------------------
1 | import foo
2 | 


--------------------------------------------------------------------------------
/tests/TODO/stmt_dots.sgrep:
--------------------------------------------------------------------------------
1 | if $X:
2 |    ...
3 | 
4 | 
5 | 
6 | 


--------------------------------------------------------------------------------
/tests/TODO/stmt_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | $V = open()
2 | ...
3 | close($V)
4 | 


--------------------------------------------------------------------------------
/tests/TODO/stmt_metavar.sgrep:
--------------------------------------------------------------------------------
1 | if $X:
2 |   $Y
3 | 


--------------------------------------------------------------------------------
/tests/TODO/string.sgrep:
--------------------------------------------------------------------------------
1 | "..."
2 | 


--------------------------------------------------------------------------------
/tests/TODO/stupid_if.sgrep:
--------------------------------------------------------------------------------
1 | if($X):
2 |   $S
3 | else:
4 |   $S
5 | 


--------------------------------------------------------------------------------
/tests/TODO/unify.sgrep:
--------------------------------------------------------------------------------
1 | $X != $X


--------------------------------------------------------------------------------
/tests/autofix/cairo/fix_vardef.fix:
--------------------------------------------------------------------------------
1 | const bar : int = $V;


--------------------------------------------------------------------------------
/tests/autofix/cairo/fix_vardef.sgrep:
--------------------------------------------------------------------------------
1 | const foo : int = $V;
2 | 


--------------------------------------------------------------------------------
/tests/autofix/cpp/fix_vardef.fix:
--------------------------------------------------------------------------------
1 | int bar = $V;


--------------------------------------------------------------------------------
/tests/autofix/cpp/fix_vardef.sgrep:
--------------------------------------------------------------------------------
1 | int foo = $V;
2 | 


--------------------------------------------------------------------------------
/tests/autofix/csharp/fix_vardef.fix:
--------------------------------------------------------------------------------
1 | int bar = $V;


--------------------------------------------------------------------------------
/tests/autofix/csharp/fix_vardef.sgrep:
--------------------------------------------------------------------------------
1 | int foo = $V;
2 | 


--------------------------------------------------------------------------------
/tests/autofix/dart/fix_vardef.fix:
--------------------------------------------------------------------------------
1 | int bar = $V;


--------------------------------------------------------------------------------
/tests/autofix/dart/fix_vardef.sgrep:
--------------------------------------------------------------------------------
1 | int foo = $V;
2 | 


--------------------------------------------------------------------------------
/tests/autofix/java/fix_vardef.fix:
--------------------------------------------------------------------------------
1 | int bar = $V;


--------------------------------------------------------------------------------
/tests/autofix/java/fix_vardef.sgrep:
--------------------------------------------------------------------------------
1 | int foo = $V;
2 | 


--------------------------------------------------------------------------------
/tests/autofix/js/arrow_func.fix:
--------------------------------------------------------------------------------
1 | bar($X)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/js/arrow_func.sgrep:
--------------------------------------------------------------------------------
1 | foo($X)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/js/fix_obj.fix:
--------------------------------------------------------------------------------
1 | foo({x: true})
2 | 


--------------------------------------------------------------------------------
/tests/autofix/js/fix_obj.fixed:
--------------------------------------------------------------------------------
1 | // MATCH:
2 | foo({x: true});
3 | 


--------------------------------------------------------------------------------
/tests/autofix/js/fix_obj.js:
--------------------------------------------------------------------------------
1 | // MATCH:
2 | foo();
3 | 


--------------------------------------------------------------------------------
/tests/autofix/js/fix_obj.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | 


--------------------------------------------------------------------------------
/tests/autofix/js/metavar_arg.fix:
--------------------------------------------------------------------------------
1 | bar($X, 4)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/js/metavar_call.fix:
--------------------------------------------------------------------------------
1 | $F(2,1)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/ocaml/poly_paren_type.fix:
--------------------------------------------------------------------------------
1 | val bar : $X


--------------------------------------------------------------------------------
/tests/autofix/ocaml/poly_paren_type.fixed:
--------------------------------------------------------------------------------
1 | val bar : (int, float) Hashtbl.t
2 | 


--------------------------------------------------------------------------------
/tests/autofix/ocaml/poly_paren_type.ml:
--------------------------------------------------------------------------------
1 | val foo : (int, float) Hashtbl.t
2 | 


--------------------------------------------------------------------------------
/tests/autofix/ocaml/poly_paren_type.sgrep:
--------------------------------------------------------------------------------
1 | val foo : $X


--------------------------------------------------------------------------------
/tests/autofix/ocaml/val.fix:
--------------------------------------------------------------------------------
1 | val foo : float


--------------------------------------------------------------------------------
/tests/autofix/ocaml/val.fixed:
--------------------------------------------------------------------------------
1 | (* MATCH: *)
2 | val foo : float
3 | 


--------------------------------------------------------------------------------
/tests/autofix/ocaml/val.ml:
--------------------------------------------------------------------------------
1 | (* MATCH: *)
2 | val foo: int
3 | 


--------------------------------------------------------------------------------
/tests/autofix/ocaml/val.sgrep:
--------------------------------------------------------------------------------
1 | val foo: int
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/aligned_fix.fix:
--------------------------------------------------------------------------------
1 | foo()
2 | bar()


--------------------------------------------------------------------------------
/tests/autofix/python/aligned_fix.fixed:
--------------------------------------------------------------------------------
1 | def f():
2 |   foo()
3 |   bar()


--------------------------------------------------------------------------------
/tests/autofix/python/aligned_fix.py:
--------------------------------------------------------------------------------
1 | def f():
2 |   to_replace()


--------------------------------------------------------------------------------
/tests/autofix/python/aligned_fix.sgrep:
--------------------------------------------------------------------------------
1 | to_replace(...)


--------------------------------------------------------------------------------
/tests/autofix/python/aligned_fix_non_ast.fix:
--------------------------------------------------------------------------------
1 | foo()
2 | def def def


--------------------------------------------------------------------------------
/tests/autofix/python/aligned_fix_non_ast.py:
--------------------------------------------------------------------------------
1 | def f():
2 |   to_replace()


--------------------------------------------------------------------------------
/tests/autofix/python/aligned_fix_non_ast.sgrep:
--------------------------------------------------------------------------------
1 | to_replace(...)


--------------------------------------------------------------------------------
/tests/autofix/python/capture_group.fixed:
--------------------------------------------------------------------------------
1 | #MATCH:
2 | f(54321)
3 | 


--------------------------------------------------------------------------------
/tests/autofix/python/capture_group.py:
--------------------------------------------------------------------------------
1 | #MATCH:
2 | f(12345)
3 | 


--------------------------------------------------------------------------------
/tests/autofix/python/capture_group.sgrep:
--------------------------------------------------------------------------------
1 | f($X)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/fix_binop.fix:
--------------------------------------------------------------------------------
1 | bar($X * 2)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/fix_binop.sgrep:
--------------------------------------------------------------------------------
1 | foo($X)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/fix_dotted_ident.fix:
--------------------------------------------------------------------------------
1 | bar.$X($...ARGS)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/fix_dotted_ident.sgrep:
--------------------------------------------------------------------------------
1 | foo.$X($...ARGS)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/fix_within_binop.fix:
--------------------------------------------------------------------------------
1 | bar() + 2
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/fix_within_binop.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/metavar_call.fix:
--------------------------------------------------------------------------------
1 | $F(2, 1)
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/metavar_string2.fix:
--------------------------------------------------------------------------------
1 | bar("$VAR")
2 | 


--------------------------------------------------------------------------------
/tests/autofix/python/metavar_string2.sgrep:
--------------------------------------------------------------------------------
1 | foo("$VAR")


--------------------------------------------------------------------------------
/tests/autofix/python/regexp_count.fix-regex:
--------------------------------------------------------------------------------
1 | A([a-z])
2 | 2
3 | [\1]


--------------------------------------------------------------------------------
/tests/autofix/python/regexp_count.sgrep:
--------------------------------------------------------------------------------
1 | foo($A)


--------------------------------------------------------------------------------
/tests/autofix/python/regexp_overcount.fix-regex:
--------------------------------------------------------------------------------
1 | A([a-z])
2 | 4
3 | [\1]


--------------------------------------------------------------------------------
/tests/autofix/python/regexp_overcount.sgrep:
--------------------------------------------------------------------------------
1 | foo($A)


--------------------------------------------------------------------------------
/tests/autofix/python/simple_regexp.fix-regex:
--------------------------------------------------------------------------------
1 | A([a-z])
2 | [\1]
3 | 


--------------------------------------------------------------------------------
/tests/autofix/python/simple_regexp.sgrep:
--------------------------------------------------------------------------------
1 | foo($A)


--------------------------------------------------------------------------------
/tests/autofix/rust/fix_vardef.fix:
--------------------------------------------------------------------------------
1 | const bar : int;


--------------------------------------------------------------------------------
/tests/autofix/rust/fix_vardef.sgrep:
--------------------------------------------------------------------------------
1 | const foo : int;
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/autofix/solidity/fix_vardef.fix:
--------------------------------------------------------------------------------
1 | int constant bar = $V;


--------------------------------------------------------------------------------
/tests/autofix/solidity/fix_vardef.sgrep:
--------------------------------------------------------------------------------
1 | int constant foo = $V;
2 | 


--------------------------------------------------------------------------------
/tests/autofix/ts/fix_cast.fix:
--------------------------------------------------------------------------------
1 | 2 + $X
2 | 


--------------------------------------------------------------------------------
/tests/autofix/ts/fix_cast.sgrep:
--------------------------------------------------------------------------------
1 | 1 + $X
2 | 


--------------------------------------------------------------------------------
/tests/irrelevant_rules/mvar-regex1.txt:
--------------------------------------------------------------------------------
1 | foo
2 | 


--------------------------------------------------------------------------------
/tests/irrelevant_rules/mvar-regex2.go:
--------------------------------------------------------------------------------
1 | import "foo/bar"
2 | 


--------------------------------------------------------------------------------
/tests/irrelevant_rules/pattern-and.py:
--------------------------------------------------------------------------------
1 | import child_process
2 | 
3 | m


--------------------------------------------------------------------------------
/tests/irrelevant_rules/pattern-either.py:
--------------------------------------------------------------------------------
1 | import django
2 | import os


--------------------------------------------------------------------------------
/tests/irrelevant_rules/pattern-regex.py:
--------------------------------------------------------------------------------
1 | hello


--------------------------------------------------------------------------------
/tests/irrelevant_rules/pattern.py:
--------------------------------------------------------------------------------
1 | shell


--------------------------------------------------------------------------------
/tests/irrelevant_rules/taint-general-source.py:
--------------------------------------------------------------------------------
1 | call(input)


--------------------------------------------------------------------------------
/tests/jsonnet/errors/error1.jsonnet:
--------------------------------------------------------------------------------
1 | [1, error "problem houston"]
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/errors/error2.jsonnet:
--------------------------------------------------------------------------------
1 | [1, error [1,2]]
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/jsonnet/errors/floor_not_float.jsonnet:
--------------------------------------------------------------------------------
1 | std.floor("32.6")
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/only_envir/format.json:
--------------------------------------------------------------------------------
1 | "hello 12"
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/only_envir/format.jsonnet:
--------------------------------------------------------------------------------
1 | std.format("hello %d", 12)
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/only_envir/format_percent.json:
--------------------------------------------------------------------------------
1 | "Hello 12"
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/only_envir/format_percent.jsonnet:
--------------------------------------------------------------------------------
1 | "Hello %d" % 12
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/only_envir/format_string.json:
--------------------------------------------------------------------------------
1 | "foostuffbar"
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/only_subst/basic_super.json:
--------------------------------------------------------------------------------
1 | { "x": 2, "y": 3, "z": 2 }


--------------------------------------------------------------------------------
/tests/jsonnet/pass/adding_self_to_self.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/array_comprehension2.json:
--------------------------------------------------------------------------------
1 | [2,3,4]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/basic.json:
--------------------------------------------------------------------------------
1 | [3,42]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/basic.jsonnet:
--------------------------------------------------------------------------------
1 | [1+2, 42]
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/closure.json:
--------------------------------------------------------------------------------
1 | 5
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/closure2.json:
--------------------------------------------------------------------------------
1 | 6
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/concat1.json:
--------------------------------------------------------------------------------
1 | ["foobar"]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/concat1.jsonnet:
--------------------------------------------------------------------------------
1 | ["foo" + "bar"]
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/concat2.json:
--------------------------------------------------------------------------------
1 | ["foo[1,2]"]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/concat2.jsonnet:
--------------------------------------------------------------------------------
1 | ["foo" + [1,2]]
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/extending_self_on_left.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/extending_self_on_right.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/filter.json:
--------------------------------------------------------------------------------
1 | [2,3]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/foo.txt:
--------------------------------------------------------------------------------
1 | this is a long string
2 | and it's amazing
3 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/function.json:
--------------------------------------------------------------------------------
1 | {"foo":3,"bar":42}


--------------------------------------------------------------------------------
/tests/jsonnet/pass/import.json:
--------------------------------------------------------------------------------
1 | [[3,42]]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/import_local.json:
--------------------------------------------------------------------------------
1 | {"bar":1}
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/importstr.json:
--------------------------------------------------------------------------------
1 | ["this is a long string\nand it's amazing\n"]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/inf.json:
--------------------------------------------------------------------------------
1 | false
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/inf.jsonnet:
--------------------------------------------------------------------------------
1 | local val = 0;
2 | val <= -1
3 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/length.json:
--------------------------------------------------------------------------------
1 | [2,2,3]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/locals_in_objects.json:
--------------------------------------------------------------------------------
1 | { "x": 4, "y": 3 }


--------------------------------------------------------------------------------
/tests/jsonnet/pass/multiple_inheritance_with_empty.json:
--------------------------------------------------------------------------------
1 |  { "x": 1, "y": 1 }


--------------------------------------------------------------------------------
/tests/jsonnet/pass/nested_object_with_self.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/null_field.json:
--------------------------------------------------------------------------------
1 | {"foo":1}


--------------------------------------------------------------------------------
/tests/jsonnet/pass/obj_access.json:
--------------------------------------------------------------------------------
1 | {"foo":1,"bar":2}
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/object.json:
--------------------------------------------------------------------------------
1 | {"foo":1,"bar":"str"}


--------------------------------------------------------------------------------
/tests/jsonnet/pass/object.jsonnet:
--------------------------------------------------------------------------------
1 | {
2 |   foo: 1,
3 |   bar: "str",
4 | }
5 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/objectHas.json:
--------------------------------------------------------------------------------
1 | [true,false]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/plus_object.json:
--------------------------------------------------------------------------------
1 | {"bar":2,"foo":2,"foobar":2}


--------------------------------------------------------------------------------
/tests/jsonnet/pass/render_int.json:
--------------------------------------------------------------------------------
1 | "-0"
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/returning_self.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/self_access.json:
--------------------------------------------------------------------------------
1 | {"foo":42,"bar":42}


--------------------------------------------------------------------------------
/tests/jsonnet/pass/self_as_object.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/self_as_object.jsonnet:
--------------------------------------------------------------------------------
1 | { x: 1, y: self }.y.y.x
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/self_bound_correctly_in_superobjects.json:
--------------------------------------------------------------------------------
1 | 2


--------------------------------------------------------------------------------
/tests/jsonnet/pass/short_circuit_func.json:
--------------------------------------------------------------------------------
1 | [false]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/simple_self.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/simple_self.jsonnet:
--------------------------------------------------------------------------------
1 | { x: 1, y: self.x }.y
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/simple_self_with_plus.json:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/jsonnet/pass/string.json:
--------------------------------------------------------------------------------
1 | ["foobar"]


--------------------------------------------------------------------------------
/tests/jsonnet/pass/string.jsonnet:
--------------------------------------------------------------------------------
1 | ["foobar"]
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/string_access.json:
--------------------------------------------------------------------------------
1 | "f"
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/string_access.jsonnet:
--------------------------------------------------------------------------------
1 | "foobar"[0]
2 | 


--------------------------------------------------------------------------------
/tests/jsonnet/pass/super_up_two_levels.json:
--------------------------------------------------------------------------------
1 | { "x": 3, "y": 1, "z": 2 }


--------------------------------------------------------------------------------
/tests/jsonnet/pass/use_std.json:
--------------------------------------------------------------------------------
1 | [3,10,2]


--------------------------------------------------------------------------------
/tests/jsonnet/tutorial/pass/garnish.txt:
--------------------------------------------------------------------------------
1 | Maraschino Cherry


--------------------------------------------------------------------------------
/tests/login/bad_response.json:
--------------------------------------------------------------------------------
1 | {
2 |   "error": "Not authorized"
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/misc/il/array.js:
--------------------------------------------------------------------------------
1 | function foo() {
2 |     return a[1][2];
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/misc/il/assert.py:
--------------------------------------------------------------------------------
1 | def foo():
2 |   assert 1 == 1
3 | 


--------------------------------------------------------------------------------
/tests/misc/il/basic.py:
--------------------------------------------------------------------------------
1 | def foo():
2 |   return 1+2
3 | 


--------------------------------------------------------------------------------
/tests/misc/il/call.py:
--------------------------------------------------------------------------------
1 | def foo():
2 |     a = bar()
3 | 


--------------------------------------------------------------------------------
/tests/misc/il/container.py:
--------------------------------------------------------------------------------
1 | def foo():
2 |   a = [eval(1), 2, 3]
3 | 


--------------------------------------------------------------------------------
/tests/misc/il/var.js:
--------------------------------------------------------------------------------
1 | function foo() {
2 |     var x = 1;
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/misc/il/var.py:
--------------------------------------------------------------------------------
1 | def foo():
2 |   a = 1
3 | 


--------------------------------------------------------------------------------
/tests/misc/perf/input/stmts-ellipsis-ab.sgrep:
--------------------------------------------------------------------------------
1 | $A;
2 | ...
3 | foo($B);
4 | 


--------------------------------------------------------------------------------
/tests/misc/target_file/target_file.list:
--------------------------------------------------------------------------------
1 | tests/js/concrete_syntax.js


--------------------------------------------------------------------------------
/tests/parsing/bash/and-cond.bash:
--------------------------------------------------------------------------------
1 | if a && b; then
2 |   c
3 | fi
4 | 


--------------------------------------------------------------------------------
/tests/parsing/bash/hello.bash:
--------------------------------------------------------------------------------
1 | echo hello
2 | 


--------------------------------------------------------------------------------
/tests/parsing/bash/pipe-or.bash:
--------------------------------------------------------------------------------
1 | a | b || c
2 | 


--------------------------------------------------------------------------------
/tests/parsing/bash/pipe-redirect.bash:
--------------------------------------------------------------------------------
1 | a | b > c
2 | 


--------------------------------------------------------------------------------
/tests/parsing/c/basic.c:
--------------------------------------------------------------------------------
1 | 
2 | int main() {
3 |   return 0;
4 | }


--------------------------------------------------------------------------------
/tests/parsing/c/char.c:
--------------------------------------------------------------------------------
1 | char grade = 'D';
2 | 


--------------------------------------------------------------------------------
/tests/parsing/cpp/char.cpp:
--------------------------------------------------------------------------------
1 | char grade = 'D';
2 | 


--------------------------------------------------------------------------------
/tests/parsing/cpp/pointer_type_declarator_ident.cpp:
--------------------------------------------------------------------------------
1 | 
2 | int x = A::B::**foo;


--------------------------------------------------------------------------------
/tests/parsing/csharp/extern_alias.cs:
--------------------------------------------------------------------------------
1 | extern alias Foo;
2 | 


--------------------------------------------------------------------------------
/tests/parsing/dockerfile/no-trailing-newline.dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu


--------------------------------------------------------------------------------
/tests/parsing/dockerfile/numeric-user.dockerfile:
--------------------------------------------------------------------------------
1 | USER 1000
2 | 


--------------------------------------------------------------------------------
/tests/parsing/dockerfile/user.dockerfile:
--------------------------------------------------------------------------------
1 | USER alpha
2 | 


--------------------------------------------------------------------------------
/tests/parsing/js/jsx.js:
--------------------------------------------------------------------------------
1 | return <a>text</a>;
2 | 


--------------------------------------------------------------------------------
/tests/parsing/jsonnet/foo.jsonnet:
--------------------------------------------------------------------------------
1 | foo(1, 2)
2 | #null
3 | 
4 | 


--------------------------------------------------------------------------------
/tests/parsing/jsonnet/string.jsonnet:
--------------------------------------------------------------------------------
1 | local x = 'foo';
2 | 1
3 | 


--------------------------------------------------------------------------------
/tests/parsing/julia/helloworld.jl:
--------------------------------------------------------------------------------
1 | println("hello world")
2 | 


--------------------------------------------------------------------------------
/tests/parsing/kotlin/binary-func.kt:
--------------------------------------------------------------------------------
1 | fun foo() {
2 |     2/3
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/parsing/kotlin/small-program.kt:
--------------------------------------------------------------------------------
1 | fun foo() {
2 |     2
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/parsing/kotlin/string.kt:
--------------------------------------------------------------------------------
1 | fun foo() {
2 |     "what"
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/parsing/lua/hello_world.lua:
--------------------------------------------------------------------------------
1 | print "Hello World!"
2 | 


--------------------------------------------------------------------------------
/tests/parsing/lua/one.lua:
--------------------------------------------------------------------------------
1 | return 1
2 | 


--------------------------------------------------------------------------------
/tests/parsing/ocaml/attribute_type.ml:
--------------------------------------------------------------------------------
1 | type foo = int [@opaque]
2 | 


--------------------------------------------------------------------------------
/tests/parsing/ocaml/basic.mli:
--------------------------------------------------------------------------------
1 | val foo: int -> bool
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/parsing/php/class.php:
--------------------------------------------------------------------------------
1 | <?php
2 | 
3 | class Foo {
4 | }
5 | 


--------------------------------------------------------------------------------
/tests/parsing/python/re.py:
--------------------------------------------------------------------------------
1 | re.match(foo, "0|false|null")
2 | 


--------------------------------------------------------------------------------
/tests/parsing/ql/basic.ql:
--------------------------------------------------------------------------------
1 | from Int x
2 | select x


--------------------------------------------------------------------------------
/tests/parsing/r/hello-world.r:
--------------------------------------------------------------------------------
1 | print("Hello world!")


--------------------------------------------------------------------------------
/tests/parsing/ruby/string.rb:
--------------------------------------------------------------------------------
1 | a = "foo"
2 | 


--------------------------------------------------------------------------------
/tests/parsing/scala/fun_dcl.scala:
--------------------------------------------------------------------------------
1 | trait foo:
2 |   def bar : T


--------------------------------------------------------------------------------
/tests/parsing/scala/splatted_args.scala:
--------------------------------------------------------------------------------
1 | 
2 | val x = foo(1, 2, bar*)


--------------------------------------------------------------------------------
/tests/parsing/scala/using_args.scala:
--------------------------------------------------------------------------------
1 | 
2 | val x = foo(using 1, 2, 3)


--------------------------------------------------------------------------------
/tests/parsing/swift/hello-world.swift:
--------------------------------------------------------------------------------
1 | print("hello world")
2 | 


--------------------------------------------------------------------------------
/tests/parsing_errors/err.ts:
--------------------------------------------------------------------------------
1 | function foo() {
2 |          return 1+
3 | }


--------------------------------------------------------------------------------
/tests/parsing_errors/unbalanced_brace.py:
--------------------------------------------------------------------------------
1 | #{
2 | {
3 | }
4 | }
5 | 


--------------------------------------------------------------------------------
/tests/parsing_patterns/go/ellipsis_asi.sgrep:
--------------------------------------------------------------------------------
1 | &http.Transport{
2 |     ...
3 | }


--------------------------------------------------------------------------------
/tests/parsing_patterns/java/import.java:
--------------------------------------------------------------------------------
1 | import a.b.c;
2 | 


--------------------------------------------------------------------------------
/tests/parsing_patterns/java/import.sgrep:
--------------------------------------------------------------------------------
1 | import $P;
2 | 


--------------------------------------------------------------------------------
/tests/parsing_patterns/java/package.sgrep:
--------------------------------------------------------------------------------
1 | package $X;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/anonymous_metavar.sgrep:
--------------------------------------------------------------------------------
1 | $_


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/concrete_syntax.sgrep:
--------------------------------------------------------------------------------
1 | foo(1, 2)


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo();
2 | bar();
3 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | foo(..., 5)


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/dots_expr.sgrep:
--------------------------------------------------------------------------------
1 | $X = ...


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/dots_for.sgrep:
--------------------------------------------------------------------------------
1 | for(...) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/dots_nested_stmts.sgrep:
--------------------------------------------------------------------------------
1 | if (...)
2 |   ...
3 | 
4 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | foo("...")


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/equivalence_constant_propagation.sgrep:
--------------------------------------------------------------------------------
1 | $F("password")


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/equivalence_float.sgrep:
--------------------------------------------------------------------------------
1 | 1.23
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/equivalence_number.sgrep:
--------------------------------------------------------------------------------
1 | 8
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/metavar_arg.sgrep:
--------------------------------------------------------------------------------
1 | foo($X, 2)


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/metavar_call.sgrep:
--------------------------------------------------------------------------------
1 | $F(1,2)


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if ($E)
2 |    foo();
3 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/metavar_equality_expr.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/metavar_key_value.sgrep:
--------------------------------------------------------------------------------
1 | {..., $KEY: $VALUE, ...}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if ($X > $Y)
2 |    $S;
3 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/metavar_string.sgrep:
--------------------------------------------------------------------------------
1 | foo("$VAR")


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/partial_class.sgrep:
--------------------------------------------------------------------------------
1 | class $A
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/partial_finally.sgrep:
--------------------------------------------------------------------------------
1 | finally { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/partial_if.sgrep:
--------------------------------------------------------------------------------
1 | if($X > $Y)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/partial_try.sgrep:
--------------------------------------------------------------------------------
1 | try { ... }
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/POLYGLOT/regexp_pcre.sgrep:
--------------------------------------------------------------------------------
1 | $X = "=~/[A-Fa-f0-9]{16}/"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/added_identifier.sh:
--------------------------------------------------------------------------------
1 | echo hello


--------------------------------------------------------------------------------
/tests/patterns/bash/anchored-stmt.sgrep:
--------------------------------------------------------------------------------
1 | { a; }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/anonymous_metavar.bash:
--------------------------------------------------------------------------------
1 | 
2 | # ERROR:
3 | a=3


--------------------------------------------------------------------------------
/tests/patterns/bash/arg-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | echo ... hello
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/arg-named-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | echo $...ARGS hello
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/array-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ar=(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/assign-add.sgrep:
--------------------------------------------------------------------------------
1 | a+=...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/assign.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | a=42
3 | 
4 | b=42
5 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/assign.sgrep:
--------------------------------------------------------------------------------
1 | a=...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/background.sgrep:
--------------------------------------------------------------------------------
1 | ... &
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/case-body.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/command-substitution-body.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/command-substitution.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | echo $(ls)
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/command-substitution.sgrep:
--------------------------------------------------------------------------------
1 | ... $(...) ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/concatenation-ellipsis.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | a${x}c
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/concatenation-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ...${$VAR}...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/concatenation-named-ellipsis.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | a${x}c
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/concatenation-named-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | $...A${$VAR}$...B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/concatenation.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | a'b'
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/concatenation.sgrep:
--------------------------------------------------------------------------------
1 | a'b'


--------------------------------------------------------------------------------
/tests/patterns/bash/concrete_syntax.sgrep:
--------------------------------------------------------------------------------
1 | foo bar
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/declaration-assignments.sgrep:
--------------------------------------------------------------------------------
1 | declare -r $VAR=...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo <... bar ...>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo
2 | bar
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | foo ... 5
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/dots_stmts.sgrep:
--------------------------------------------------------------------------------
1 | $V=$(cat)
2 | ...
3 | eval ${$V}
4 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | foo "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/expression.sgrep:
--------------------------------------------------------------------------------
1 | foo
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/for-body.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/function-body.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/function.sgrep:
--------------------------------------------------------------------------------
1 | function f(){ ...; }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/hello.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/if-body.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/if-header.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/match-cmd-or-arg.sgrep:
--------------------------------------------------------------------------------
1 | a
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/metavar_arg.sgrep:
--------------------------------------------------------------------------------
1 | foo $X 2
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/metavar_call.sgrep:
--------------------------------------------------------------------------------
1 | $CMD foo bar
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/metavar_equality_expr.sgrep:
--------------------------------------------------------------------------------
1 | cp ... $X ... $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/metavar_func_def.sgrep:
--------------------------------------------------------------------------------
1 | function $F() {
2 |   ...
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/nested_stmts.sgrep:
--------------------------------------------------------------------------------
1 | if ...; then
2 |   ...
3 | fi
4 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/normalize-dquoted-word.sgrep:
--------------------------------------------------------------------------------
1 | "hello" world
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/normalize-squoted-word.sgrep:
--------------------------------------------------------------------------------
1 | 'hello' world
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/not-an-expression1.sgrep:
--------------------------------------------------------------------------------
1 | foo;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/not-an-expression2.sgrep:
--------------------------------------------------------------------------------
1 | foo > bar
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/not-an-expression3.sgrep:
--------------------------------------------------------------------------------
1 | foo &
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/not-an-expression4.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | foo bar
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/not-an-expression4.sgrep:
--------------------------------------------------------------------------------
1 | foo bar
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/not-an-expression5.sgrep:
--------------------------------------------------------------------------------
1 | foo | bar
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/not.sgrep:
--------------------------------------------------------------------------------
1 | ! ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/or.sgrep:
--------------------------------------------------------------------------------
1 | ... || ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/pipeline.sgrep:
--------------------------------------------------------------------------------
1 | ... | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/quoted-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/quoted-ellipsis2.sgrep:
--------------------------------------------------------------------------------
1 | "${$A}...${$B}"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/quoted-expansion.sgrep:
--------------------------------------------------------------------------------
1 | "$X"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/quoted-named-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | "$...X"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/quoted-named-ellipsis2.sgrep:
--------------------------------------------------------------------------------
1 | "${$A}$...MIDDLE${$B}"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/select-body.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/set-lhs-metavar.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | a=42
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/set-lhs-metavar.sgrep:
--------------------------------------------------------------------------------
1 | $X=42
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/set-rhs-metavar.bash:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | HOME=$X
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/set-rhs-metavar.sgrep:
--------------------------------------------------------------------------------
1 | HOME=$ANY
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/stmt-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | a; ...; b
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/stmt-named-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | a; $...STMT; b
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/subshell.sgrep:
--------------------------------------------------------------------------------
1 | (...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/todo/array-named-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ar=($...X)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/todo/assign-multi.sgrep:
--------------------------------------------------------------------------------
1 | a=...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/todo/c-style-loop.sgrep:
--------------------------------------------------------------------------------
1 | for ...; do
2 |   ...
3 | done
4 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/todo/until.sgrep:
--------------------------------------------------------------------------------
1 | until ...; do
2 |   ...
3 | done
4 | 
5 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/todo/var-ellipsis-var.bash:
--------------------------------------------------------------------------------
1 | 'a'b
2 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/todo/var-ellipsis-var.sgrep:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | $A...$B
3 | 


--------------------------------------------------------------------------------
/tests/patterns/bash/while-body.sgrep:
--------------------------------------------------------------------------------
1 | echo ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/anonymous_metavar.c:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2;


--------------------------------------------------------------------------------
/tests/patterns/c/const-prop-buf-decl-flow.sgrep:
--------------------------------------------------------------------------------
1 | $TYPE $NAME[50];
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/const-prop-buf-decl.sgrep:
--------------------------------------------------------------------------------
1 | $TYPE $NAME[42];
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | int $F(...) {
2 | }
3 | 


--------------------------------------------------------------------------------
/tests/patterns/c/dots_sizeof.sgrep:
--------------------------------------------------------------------------------
1 | sizeof(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | #include $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/metavar_typed.sgrep:
--------------------------------------------------------------------------------
1 | (char *$X) == $Y
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/metavar_typed_generic.sgrep:
--------------------------------------------------------------------------------
1 | ($T *$X) == ($T *$Y)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/misc_toplevel_macrocall.sgrep:
--------------------------------------------------------------------------------
1 | SOME_FUNC(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/misc_typedef_inference.sgrep:
--------------------------------------------------------------------------------
1 | sizeof($X)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/c/partial_parsing/misc_ifdef_strings.sgrep:
--------------------------------------------------------------------------------
1 | SOME_FUNC(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/cairo/deep_cond.sgrep:
--------------------------------------------------------------------------------
1 | if <... $SOME_EXPR == true ...> {}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/cairo/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | 
2 | bar(...);
3 | 


--------------------------------------------------------------------------------
/tests/patterns/cairo/dots_loop.sgrep:
--------------------------------------------------------------------------------
1 | loop {
2 |     ...
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/cairo/metavar_let.sgrep:
--------------------------------------------------------------------------------
1 | let $X = $Y;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/cairo/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if $X > $Y {
2 |    $S;
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/cairo/misc_impl.sgrep:
--------------------------------------------------------------------------------
1 | impl UnsafeType of $USERTYPE {}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/circom/anonymous_metavar.circom:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 1;


--------------------------------------------------------------------------------
/tests/patterns/circom/metavar_version.circom:
--------------------------------------------------------------------------------
1 | // MATCH:
2 | pragma circom 2.0.0;


--------------------------------------------------------------------------------
/tests/patterns/circom/metavar_version.sgrep:
--------------------------------------------------------------------------------
1 | pragma circom $PRAGMA;


--------------------------------------------------------------------------------
/tests/patterns/clojure/concrete_syntax.sgrep:
--------------------------------------------------------------------------------
1 | (foo 1 2)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/clojure/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | (foo ... 5)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/clojure/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | (foo "...")
2 | 
3 | 
4 | 


--------------------------------------------------------------------------------
/tests/patterns/clojure/metavar_arg.sgrep:
--------------------------------------------------------------------------------
1 | (foo $X 2)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/clojure/metavar_call.sgrep:
--------------------------------------------------------------------------------
1 | ($F 1 2)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/clojure/metavar_slash_access.sgrep:
--------------------------------------------------------------------------------
1 | ($X/parse 1 2)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/cp_exception.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X


--------------------------------------------------------------------------------
/tests/patterns/cpp/anonymous_metavar.cpp:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2;


--------------------------------------------------------------------------------
/tests/patterns/cpp/block_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | { ... }


--------------------------------------------------------------------------------
/tests/patterns/cpp/dots_namespace.sgrep:
--------------------------------------------------------------------------------
1 | namespace VM { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/cpp/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | int $F(...) {
2 | }
3 | 


--------------------------------------------------------------------------------
/tests/patterns/cpp/misc_const.sgrep:
--------------------------------------------------------------------------------
1 | const $TYPE $VARIABLE = $VALUE;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/cpp/misc_include.sgrep:
--------------------------------------------------------------------------------
1 | #include <foo.h>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/cpp/named_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | foo($...X)


--------------------------------------------------------------------------------
/tests/patterns/cpp/standalone_expr.sgrep:
--------------------------------------------------------------------------------
1 | foo(...)


--------------------------------------------------------------------------------
/tests/patterns/cpp/toplevel_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ...


--------------------------------------------------------------------------------
/tests/patterns/cpp/typed_metavar.sgrep:
--------------------------------------------------------------------------------
1 | (int $X)


--------------------------------------------------------------------------------
/tests/patterns/csharp/concrete_syntax.sgrep:
--------------------------------------------------------------------------------
1 | Foo(1, 2)


--------------------------------------------------------------------------------
/tests/patterns/csharp/decl_before_init.sgrep:
--------------------------------------------------------------------------------
1 | (IFoobar $F).Find(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | <... 12 ...>


--------------------------------------------------------------------------------
/tests/patterns/csharp/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | Foo(..., 5)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/dots_class.sgrep:
--------------------------------------------------------------------------------
1 | class Foo { ... }


--------------------------------------------------------------------------------
/tests/patterns/csharp/dots_stmts.sgrep:
--------------------------------------------------------------------------------
1 | $X = Get();
2 | ...
3 | Eval($X);
4 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | Foo("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/loops.sgrep:
--------------------------------------------------------------------------------
1 | while($COND) { ... }


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_anno.sgrep:
--------------------------------------------------------------------------------
1 | [$ANNO]
2 | class $CLASS{ ... }


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_arg.sgrep:
--------------------------------------------------------------------------------
1 | Foo($X, 2)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_class_def.sgrep:
--------------------------------------------------------------------------------
1 | class $KLASS {}


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if ($COND) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_ellipsis_new_args.sgrep:
--------------------------------------------------------------------------------
1 | new C($...ARGS)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_equality_expr.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_func_def.sgrep:
--------------------------------------------------------------------------------
1 | $RETURNTYPE $FUNC(...) {...}


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | using $X;


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_key_value.sgrep:
--------------------------------------------------------------------------------
1 | Foo(..., bar: 42, ...);


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if ($E) {
2 |     $S;
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/metavar_typed.sgrep:
--------------------------------------------------------------------------------
1 | $X == (String $Y)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/csharp/misc_enum_pattern.sgrep:
--------------------------------------------------------------------------------
1 | public enum $ENUM { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dart/anonymous_metavar.dart:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | const x = 2;


--------------------------------------------------------------------------------
/tests/patterns/dart/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>)


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/add.sgrep:
--------------------------------------------------------------------------------
1 | ADD file1 file2 /mydir/
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/arg-default-metavar.sgrep:
--------------------------------------------------------------------------------
1 | ARG $VAR=$VAL
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/arg-metavar.sgrep:
--------------------------------------------------------------------------------
1 | ARG $VAR
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/arg.sgrep:
--------------------------------------------------------------------------------
1 | ARG a=42
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/array-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | RUN ["sudo", ...]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/array-metavariable.sgrep:
--------------------------------------------------------------------------------
1 | RUN [$X]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/cmd-argv.sgrep:
--------------------------------------------------------------------------------
1 | CMD ["echo", "hello"]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/cmd-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | CMD ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/cmd-named-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | CMD $...ARGS
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/cmd-shell.sgrep:
--------------------------------------------------------------------------------
1 | CMD ...;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/copy-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | COPY ... $DST
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/copy-metavar.sgrep:
--------------------------------------------------------------------------------
1 | COPY foo $DST
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/copy-param.sgrep:
--------------------------------------------------------------------------------
1 | COPY file1 file2 /mydir/
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/copy.sgrep:
--------------------------------------------------------------------------------
1 | COPY file1 file2 /mydir/
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo
2 | bar
3 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | foo ... 5
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | foo "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/entrypoint-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ENTRYPOINT ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/entrypoint.sgrep:
--------------------------------------------------------------------------------
1 | ENTRYPOINT ["s3cmd"]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/env-const-prop.sgrep:
--------------------------------------------------------------------------------
1 | EXPOSE 0


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/env-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ENV ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/env-val-metavar.sgrep:
--------------------------------------------------------------------------------
1 | ENV FOO=$VAL
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/env.sgrep:
--------------------------------------------------------------------------------
1 | ENV MY_NAME="John Doe"
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/expose-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | EXPOSE ... 222/udp ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/expose-metavar.sgrep:
--------------------------------------------------------------------------------
1 | EXPOSE $PORT_PROTO
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/expose.sgrep:
--------------------------------------------------------------------------------
1 | EXPOSE 42
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/from-as.sgrep:
--------------------------------------------------------------------------------
1 | FROM debian AS deb
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/from-param.sgrep:
--------------------------------------------------------------------------------
1 | FROM alpine
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/from.sgrep:
--------------------------------------------------------------------------------
1 | FROM debian
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/from2.sgrep:
--------------------------------------------------------------------------------
1 | FROM debian:unstable-slim
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/healthcheck-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | HEALTHCHECK ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/healthcheck-none.sgrep:
--------------------------------------------------------------------------------
1 | HEALTHCHECK NONE
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/instruction-metavariable.sgrep:
--------------------------------------------------------------------------------
1 | $INSTR
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/label-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | LABEL ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/label-metavar.sgrep:
--------------------------------------------------------------------------------
1 | LABEL $KEY=$VALUE
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/label-variable-key.sgrep:
--------------------------------------------------------------------------------
1 | LABEL $X=value
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/label.sgrep:
--------------------------------------------------------------------------------
1 | LABEL a=b c=d
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/maintainer.sgrep:
--------------------------------------------------------------------------------
1 | MAINTAINER nobody
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/metavar_arg.sgrep:
--------------------------------------------------------------------------------
1 | foo $X 2
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/metavar_call.sgrep:
--------------------------------------------------------------------------------
1 | $CMD foo bar
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/multiline_comment.sgrep:
--------------------------------------------------------------------------------
1 | echo "bar"


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/no-trailing-newline.sgrep:
--------------------------------------------------------------------------------
1 | CMD ...


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/onbuild.sgrep:
--------------------------------------------------------------------------------
1 | ONBUILD RUN ls
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/run-anchored.sgrep:
--------------------------------------------------------------------------------
1 | RUN b
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/run-argv.sgrep:
--------------------------------------------------------------------------------
1 | RUN ["echo", "hello"]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/run-param-metavar.sgrep:
--------------------------------------------------------------------------------
1 | RUN --foo=$FOO echo
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/run-param.sgrep:
--------------------------------------------------------------------------------
1 | RUN --mount=type=secret ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/run.sgrep:
--------------------------------------------------------------------------------
1 | RUN ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/stopsignal-metavar.sgrep:
--------------------------------------------------------------------------------
1 | STOPSIGNAL $SIGNAL
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/stopsignal.sgrep:
--------------------------------------------------------------------------------
1 | STOPSIGNAL SIGUSR1
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/string-comparison.sgrep:
--------------------------------------------------------------------------------
1 | ENV X a
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/todo/env-key-metavar.sgrep:
--------------------------------------------------------------------------------
1 | ENV $KEY=42
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/todo/string-fragments.sgrep:
--------------------------------------------------------------------------------
1 | ENV A abc
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/user-group-metavar.sgrep:
--------------------------------------------------------------------------------
1 | USER $USER:$GROUP
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/user-group.sgrep:
--------------------------------------------------------------------------------
1 | USER root:root
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/user.sgrep:
--------------------------------------------------------------------------------
1 | USER root
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/volume-metavar.sgrep:
--------------------------------------------------------------------------------
1 | VOLUME $VOLUME
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/volume.sgrep:
--------------------------------------------------------------------------------
1 | VOLUME /var/log
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/workdir-metavar.sgrep:
--------------------------------------------------------------------------------
1 | WORKDIR /home/$DIR
2 | 


--------------------------------------------------------------------------------
/tests/patterns/dockerfile/workdir.sgrep:
--------------------------------------------------------------------------------
1 | WORKDIR /home/patrick
2 | 


--------------------------------------------------------------------------------
/tests/patterns/generic/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | foo(
2 |   ... 5 ...
3 | )
4 | 


--------------------------------------------------------------------------------
/tests/patterns/generic/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | foo(
2 |   "..."
3 | )
4 | 


--------------------------------------------------------------------------------
/tests/patterns/generic/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if ($X > $Y)
2 |   ...;
3 | 


--------------------------------------------------------------------------------
/tests/patterns/generic/minified.sgrep:
--------------------------------------------------------------------------------
1 | a


--------------------------------------------------------------------------------
/tests/patterns/generic/not-minified.sgrep:
--------------------------------------------------------------------------------
1 | a


--------------------------------------------------------------------------------
/tests/patterns/go/anonymous_metavar.go:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 1;


--------------------------------------------------------------------------------
/tests/patterns/go/cp_ref.sgrep:
--------------------------------------------------------------------------------
1 | &0
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/cp_shortassign.sgrep:
--------------------------------------------------------------------------------
1 | fmt.Println("...")
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/go/dots_for.sgrep:
--------------------------------------------------------------------------------
1 | for ... {
2 |   ...
3 | }


--------------------------------------------------------------------------------
/tests/patterns/go/dots_nested_stmts.sgrep:
--------------------------------------------------------------------------------
1 | if $E {
2 |   ...
3 | }


--------------------------------------------------------------------------------
/tests/patterns/go/dots_package.sgrep:
--------------------------------------------------------------------------------
1 | package hacknews
2 | ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/go/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | func $F(...) { 
2 |   ...
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/go/dots_stmts.sgrep:
--------------------------------------------------------------------------------
1 | $X = get()
2 | ...
3 | eval($X)


--------------------------------------------------------------------------------
/tests/patterns/go/equivalence_constant_dataflow.sgrep.TODO:
--------------------------------------------------------------------------------
1 | $f("password")


--------------------------------------------------------------------------------
/tests/patterns/go/equivalence_naming_import.sgrep:
--------------------------------------------------------------------------------
1 | subprocess.open(...)


--------------------------------------------------------------------------------
/tests/patterns/go/equivalence_naming_import1.sgrep:
--------------------------------------------------------------------------------
1 | jwt.BAD_CONST
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/equivalence_naming_import2.sgrep:
--------------------------------------------------------------------------------
1 | youtube.BAD_CONST
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/imports.sgrep:
--------------------------------------------------------------------------------
1 | import "foo/bar"


--------------------------------------------------------------------------------
/tests/patterns/go/imports2.sgrep:
--------------------------------------------------------------------------------
1 | import "$X"


--------------------------------------------------------------------------------
/tests/patterns/go/imports3.sgrep:
--------------------------------------------------------------------------------
1 | import "foobar"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/imports_metavar.sgrep:
--------------------------------------------------------------------------------
1 | import ("$X")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/imports_prefix.sgrep:
--------------------------------------------------------------------------------
1 | import "foo"


--------------------------------------------------------------------------------
/tests/patterns/go/make-args-trans.sgrep:
--------------------------------------------------------------------------------
1 | make(map[$T1]$T2, ...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/make_metavar_firstarg.sgrep:
--------------------------------------------------------------------------------
1 | $X := make($Y,$Z)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/make_tri_pat.sgrep:
--------------------------------------------------------------------------------
1 | make($TY,...,$ARG)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if ($E) { 
2 |   foo() 
3 | }


--------------------------------------------------------------------------------
/tests/patterns/go/metavar_expr.sgrep:
--------------------------------------------------------------------------------
1 | $IDENT
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/metavar_package.sgrep:
--------------------------------------------------------------------------------
1 | package $X;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if ($X > $Y) {
2 |    $S;
3 | }


--------------------------------------------------------------------------------
/tests/patterns/go/metavar_typed.sgrep:
--------------------------------------------------------------------------------
1 | $X == ($Y : string)


--------------------------------------------------------------------------------
/tests/patterns/go/metavar_typed_lefthand.sgrep:
--------------------------------------------------------------------------------
1 | ($A : [5]person) = $B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/metavar_typed_literal.sgrep:
--------------------------------------------------------------------------------
1 | $KEY = ($VAL : string)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_assignop.sgrep:
--------------------------------------------------------------------------------
1 | if $A, $B := ... ; $B { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_empty_body.sgrep:
--------------------------------------------------------------------------------
1 | if (...) {
2 | }
3 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_exprstmt_vs_expr.sgrep:
--------------------------------------------------------------------------------
1 | $X == $Y
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_import.sgrep:
--------------------------------------------------------------------------------
1 | import ("foo")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_interface_method.sgrep:
--------------------------------------------------------------------------------
1 | $FOO(...) bool
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_noteq.sgrep:
--------------------------------------------------------------------------------
1 | $X != nil;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_package.sgrep:
--------------------------------------------------------------------------------
1 | package hacknews
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_tuple_order.sgrep:
--------------------------------------------------------------------------------
1 | if $A, $B = ... ; $A { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/misc_type_decl.sgrep:
--------------------------------------------------------------------------------
1 | type $X struct { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/package_metavar.sgrep:
--------------------------------------------------------------------------------
1 | package $X;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/partial_initbraces.sgrep:
--------------------------------------------------------------------------------
1 | {..., OK: $VALUE, ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/partial_single_field.sgrep:
--------------------------------------------------------------------------------
1 | OK: $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/regexp_caret.sgrep:
--------------------------------------------------------------------------------
1 | $SECRET := "=~/\^/i"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/string_literals.sgrep:
--------------------------------------------------------------------------------
1 | "hello"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/go/struct_tags.sgrep:
--------------------------------------------------------------------------------
1 | `...`


--------------------------------------------------------------------------------
/tests/patterns/go/struct_tags_one.sgrep:
--------------------------------------------------------------------------------
1 | `json:"name"`


--------------------------------------------------------------------------------
/tests/patterns/go/typing-make.sgrep:
--------------------------------------------------------------------------------
1 | ($X : a).$M()
2 | 


--------------------------------------------------------------------------------
/tests/patterns/hack/TODO/equivalence_eq.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/hack/anonymous_metavar.hack:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2;


--------------------------------------------------------------------------------
/tests/patterns/hack/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | function foo(..., $var) {
2 | }
3 | 


--------------------------------------------------------------------------------
/tests/patterns/hack/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if ($E) {
2 |    foo();
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/html/metavar_tag.sgrep:
--------------------------------------------------------------------------------
1 | <$X a="1"></$X>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/anonymous_metavar.java:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2;


--------------------------------------------------------------------------------
/tests/patterns/java/better_import1.sgrep:
--------------------------------------------------------------------------------
1 | A.foo(...)


--------------------------------------------------------------------------------
/tests/patterns/java/better_import2.sgrep:
--------------------------------------------------------------------------------
1 | A.B.foo(...)


--------------------------------------------------------------------------------
/tests/patterns/java/better_import3.sgrep:
--------------------------------------------------------------------------------
1 | A.B.foo(...)


--------------------------------------------------------------------------------
/tests/patterns/java/better_import4.sgrep:
--------------------------------------------------------------------------------
1 | A.B.C.D.foo(...)


--------------------------------------------------------------------------------
/tests/patterns/java/cp_foreach.sgrep:
--------------------------------------------------------------------------------
1 | $X != $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_is_must_analysis.sgrep:
--------------------------------------------------------------------------------
1 | X.test("hello")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_is_must_analysis1.sgrep:
--------------------------------------------------------------------------------
1 | X.test("hello")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_is_must_analysis2.sgrep:
--------------------------------------------------------------------------------
1 | X.test("goodbye")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_string_format.sgrep:
--------------------------------------------------------------------------------
1 | foobar("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_switch_throw.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_synchronized.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_synchronized1.sgrep:
--------------------------------------------------------------------------------
1 | test("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/cp_try_return.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/dots_enum.sgrep:
--------------------------------------------------------------------------------
1 | @foo
2 | enum $A { ... }
3 | 
4 | 


--------------------------------------------------------------------------------
/tests/patterns/java/dots_generics.sgrep:
--------------------------------------------------------------------------------
1 | class Foo<...> { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/dots_import.sgrep:
--------------------------------------------------------------------------------
1 | import Foo.Bar;
2 | ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/java/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | void foo(...) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/dots_vardef.sgrep:
--------------------------------------------------------------------------------
1 | String $VAR = "...";
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/equivalence_constant_propagation.sgrep:
--------------------------------------------------------------------------------
1 | foo("password")


--------------------------------------------------------------------------------
/tests/patterns/java/errors/recoverable_error1.java:
--------------------------------------------------------------------------------
1 | class X {
2 |     
3 | 


--------------------------------------------------------------------------------
/tests/patterns/java/generics_args.sgrep:
--------------------------------------------------------------------------------
1 | (List<$TYPE> $ARGLIST)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/import_metavar_fullpath.sgrep:
--------------------------------------------------------------------------------
1 | import $LIB;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/less_generics.sgrep:
--------------------------------------------------------------------------------
1 | class $X { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/less_inheritance.sgrep:
--------------------------------------------------------------------------------
1 | class A {
2 |   ...
3 | }


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_idspecial.sgrep:
--------------------------------------------------------------------------------
1 | $FUNC(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | import java.util.$X;


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_name.sgrep:
--------------------------------------------------------------------------------
1 | import $LIB;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_package.sgrep:
--------------------------------------------------------------------------------
1 | package $PACKAGE;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_typed.sgrep:
--------------------------------------------------------------------------------
1 | $X == (String $Y)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_typed_classfield.sgrep:
--------------------------------------------------------------------------------
1 | check((int $X))
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_typed_field.sgrep:
--------------------------------------------------------------------------------
1 | check((FooType $X))
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_typed_function.sgrep:
--------------------------------------------------------------------------------
1 | int $A() {...}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_typed_lefthand.sgrep:
--------------------------------------------------------------------------------
1 | (Bar[] $A) = $B;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/metavar_typed_localvar.sgrep:
--------------------------------------------------------------------------------
1 | (Bar[] $B)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_accent_record.sgrep:
--------------------------------------------------------------------------------
1 | class $X { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_annot.sgrep:
--------------------------------------------------------------------------------
1 | @Attr($ARG)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_assert.sgrep:
--------------------------------------------------------------------------------
1 | assert $X;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_at_interface.sgrep:
--------------------------------------------------------------------------------
1 | asdf(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_class_literal.sgrep:
--------------------------------------------------------------------------------
1 | Hello.class
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_constructor.sgrep:
--------------------------------------------------------------------------------
1 | MyJavaClass() { }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_import_static.sgrep:
--------------------------------------------------------------------------------
1 | import static $CLASS;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_precedence.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_static_block.sgrep:
--------------------------------------------------------------------------------
1 | static { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_super_call.sgrep:
--------------------------------------------------------------------------------
1 | super(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/misc_token_cast.sgrep:
--------------------------------------------------------------------------------
1 | (Object) this
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/java/parameterized_type.sgrep:
--------------------------------------------------------------------------------
1 | new SpecificDatumReader(...)


--------------------------------------------------------------------------------
/tests/patterns/java/partial_method.sgrep:
--------------------------------------------------------------------------------
1 | void foo(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/try_mutli_resources.sgrep:
--------------------------------------------------------------------------------
1 | zipFileName
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/try_resources.sgrep:
--------------------------------------------------------------------------------
1 | HttpClients.createDefault()
2 | 


--------------------------------------------------------------------------------
/tests/patterns/java/visit_attribute.sgrep:
--------------------------------------------------------------------------------
1 | @SomeAnnot(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/aliasing_require.sgrep:
--------------------------------------------------------------------------------
1 | child_process.execSync(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/anonymous_metavar.js:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2;


--------------------------------------------------------------------------------
/tests/patterns/js/caching_deep.sgrep:
--------------------------------------------------------------------------------
1 | 2;
2 | ...
3 | 3;
4 | 


--------------------------------------------------------------------------------
/tests/patterns/js/caching_deep_metavar.sgrep:
--------------------------------------------------------------------------------
1 | $X;
2 | ...
3 | 3;
4 | 


--------------------------------------------------------------------------------
/tests/patterns/js/caching_flat.sgrep:
--------------------------------------------------------------------------------
1 | 2;
2 | ...
3 | 4;
4 | 


--------------------------------------------------------------------------------
/tests/patterns/js/caching_nested.sgrep:
--------------------------------------------------------------------------------
1 | 2;
2 | ...
3 | 4;
4 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_array_destructure.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X


--------------------------------------------------------------------------------
/tests/patterns/js/cp_conditional.sgrep:
--------------------------------------------------------------------------------
1 | require('...')
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_dataflow.sgrep:
--------------------------------------------------------------------------------
1 | value = obj["..."]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_implicit_conversion.sgrep:
--------------------------------------------------------------------------------
1 | return 'abc1-2-3'
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_incrdecr.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_label.sgrep:
--------------------------------------------------------------------------------
1 | "=~/http:///"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_throw.sgrep:
--------------------------------------------------------------------------------
1 | return "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_undeclared.sgrep:
--------------------------------------------------------------------------------
1 | console.log("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/cp_undeclared1.sgrep:
--------------------------------------------------------------------------------
1 | value = obj["..."]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/deep_cond.sgrep:
--------------------------------------------------------------------------------
1 | if(<... $X = true ...>) 
2 |   ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/deep_expr_vs_statement.sgrep:
--------------------------------------------------------------------------------
1 | <... a ...>;
2 | b
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/deep_expr_xml.sgrep:
--------------------------------------------------------------------------------
1 | <... {__html: `...`} ...>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/deep_jsx.sgrep:
--------------------------------------------------------------------------------
1 | <$TAG attr="1" />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_container.sgrep:
--------------------------------------------------------------------------------
1 | var $X = [...];


--------------------------------------------------------------------------------
/tests/patterns/js/dots_container2.sgrep:
--------------------------------------------------------------------------------
1 | var $X = [...,1];
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_field_chaining.sgrep:
--------------------------------------------------------------------------------
1 | foo. ... .bar
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_importfrom.sgrep:
--------------------------------------------------------------------------------
1 | import jwt_decode from "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_jsx_attr.sgrep:
--------------------------------------------------------------------------------
1 | <foo attr=... />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_jsx_attr_list.sgrep:
--------------------------------------------------------------------------------
1 | <$TAG attr="1" ... />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_jsx_body.sgrep:
--------------------------------------------------------------------------------
1 | <a href="...">...</a>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_jsx_body2.sgrep:
--------------------------------------------------------------------------------
1 | <div>...</div>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_object.sgrep:
--------------------------------------------------------------------------------
1 | var X = {..., secure:false, ...};
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_object2.sgrep:
--------------------------------------------------------------------------------
1 | var X = {...};
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | function foo(...) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_regexp.js:
--------------------------------------------------------------------------------
1 | //ERROR: match
2 | const x = /abc/;
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_regexp.sgrep:
--------------------------------------------------------------------------------
1 | /.../
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/dots_template_literals.sgrep:
--------------------------------------------------------------------------------
1 | $X = `...${...}...`
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/equivalence_constant_propagation2.sgrep:
--------------------------------------------------------------------------------
1 | api("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/equivalence_constant_propagation3.sgrep:
--------------------------------------------------------------------------------
1 | $X === $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/equivalence_keyword_args.sgrep:
--------------------------------------------------------------------------------
1 | foo({kwd2:$X, kwd1:$Y})


--------------------------------------------------------------------------------
/tests/patterns/js/equivalence_varlet.sgrep:
--------------------------------------------------------------------------------
1 | var $X = "hello";
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/eval_call.sgrep:
--------------------------------------------------------------------------------
1 | $F(x)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/infer_const.sgrep:
--------------------------------------------------------------------------------
1 | console.log("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/infer_const_regexp.sgrep:
--------------------------------------------------------------------------------
1 | new RegExp(/a/)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/less_class_complex.sgrep:
--------------------------------------------------------------------------------
1 | class A {
2 |   ...
3 | }


--------------------------------------------------------------------------------
/tests/patterns/js/less_xml_body.sgrep:
--------------------------------------------------------------------------------
1 | <div a="..." ></div>
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | import $X from 'foo';
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_importfrom.sgrep:
--------------------------------------------------------------------------------
1 | import jwt_decode from $X;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_jsx_attr.sgrep:
--------------------------------------------------------------------------------
1 | <foo $A="1" />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_jsx_tag.sgrep:
--------------------------------------------------------------------------------
1 | <$XXX attr="1" />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_jsx_val.sgrep:
--------------------------------------------------------------------------------
1 | <a href=$X>...</a>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_regexp.sgrep:
--------------------------------------------------------------------------------
1 | foo(/$X/, "$X")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_template.sgrep:
--------------------------------------------------------------------------------
1 | `$LEFT${...}$RIGHT`


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_typed_bool.sgrep:
--------------------------------------------------------------------------------
1 | func(($VAL: boolean))
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/metavar_typed_literal.sgrep:
--------------------------------------------------------------------------------
1 | func(($VAL: number))
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_arrow.sgrep:
--------------------------------------------------------------------------------
1 | (a) => { ... }


--------------------------------------------------------------------------------
/tests/patterns/js/misc_arrow2.sgrep:
--------------------------------------------------------------------------------
1 | (...) => { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_asi_pattern.sgrep:
--------------------------------------------------------------------------------
1 | foo(r => {bar(r)})
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_empty_body.sgrep:
--------------------------------------------------------------------------------
1 | if (...) {
2 | }
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_expr_vs_vardef.sgrep:
--------------------------------------------------------------------------------
1 | password = "...";
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_faketok.sgrep:
--------------------------------------------------------------------------------
1 | $REQUEST(..., $REQ, ...)
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_field_vs_vardef.sgrep:
--------------------------------------------------------------------------------
1 | $Y = {$X: "..."};
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_jsx.sgrep:
--------------------------------------------------------------------------------
1 | <div a={foo()} />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_lambda.sgrep:
--------------------------------------------------------------------------------
1 | function() { 
2 |   ... 
3 | }


--------------------------------------------------------------------------------
/tests/patterns/js/misc_method_brace_newline.sgrep:
--------------------------------------------------------------------------------
1 | return 0;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_new.js:
--------------------------------------------------------------------------------
1 | //ERROR: match
2 | var x = new A(1);
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_new.sgrep:
--------------------------------------------------------------------------------
1 | new $A(1)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_notoken.sgrep:
--------------------------------------------------------------------------------
1 | $X = $Y;
2 | $X = $Z;
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_null_cast.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_object_directly.sgrep:
--------------------------------------------------------------------------------
1 | { fld1: $X }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_regexp_modifier.sgrep:
--------------------------------------------------------------------------------
1 | /.../g
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_string.js:
--------------------------------------------------------------------------------
1 | //ERROR: match
2 | foo("bar")
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_string.sgrep:
--------------------------------------------------------------------------------
1 | foo("bar")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_this.sgrep:
--------------------------------------------------------------------------------
1 | var $URL = $THIS.request.params;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_unicode.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/misc_yield_undefined.sgrep:
--------------------------------------------------------------------------------
1 | yield
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/object_numeric_key.sgrep:
--------------------------------------------------------------------------------
1 | {1:...}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/partial_catch.sgrep:
--------------------------------------------------------------------------------
1 | catch($E) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/partial_function.sgrep:
--------------------------------------------------------------------------------
1 | function foo(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/partial_single_field.sgrep:
--------------------------------------------------------------------------------
1 | dependencies: { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/regexp.js:
--------------------------------------------------------------------------------
1 | //ERROR: match
2 | const x = /abc/;
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/regexp.sgrep:
--------------------------------------------------------------------------------
1 | const x = /.../;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/semgrep/jsx.sgrep:
--------------------------------------------------------------------------------
1 | <foo attr="1" />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/semgrep/metavar_jsx.sgrep:
--------------------------------------------------------------------------------
1 | <$XXX attr="1" />
2 | 


--------------------------------------------------------------------------------
/tests/patterns/js/switch_case_pattern.sgrep:
--------------------------------------------------------------------------------
1 | case 5:
2 |   ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/js/template_string_w_metavar.sgrep:
--------------------------------------------------------------------------------
1 | `...${$X}...`


--------------------------------------------------------------------------------
/tests/patterns/js/typed_metavar_assign.sgrep:
--------------------------------------------------------------------------------
1 | $O[($ARG : float)]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/json/anonymous_metavar.json:
--------------------------------------------------------------------------------
1 | // ERROR:
2 | 2


--------------------------------------------------------------------------------
/tests/patterns/json/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | "foo": <... 42 ...>


--------------------------------------------------------------------------------
/tests/patterns/json/metavar_array.sgrep:
--------------------------------------------------------------------------------
1 | { "key": $V, "var": [ ... ] }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/json/partial_single_field.sgrep:
--------------------------------------------------------------------------------
1 | "foo": $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/json/partial_single_field2.sgrep:
--------------------------------------------------------------------------------
1 | "foo": { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/jsonnet/anonymous_metavar.jsonnet:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/jsonnet/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>)


--------------------------------------------------------------------------------
/tests/patterns/julia/anonymous_metavar.jl:
--------------------------------------------------------------------------------
1 | 
2 | # ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/julia/dots_nested_stmts.sgrep:
--------------------------------------------------------------------------------
1 | if ...
2 |   ...
3 | end
4 | 


--------------------------------------------------------------------------------
/tests/patterns/julia/implicit_return.sgrep:
--------------------------------------------------------------------------------
1 | return $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/julia/import_alias.sgrep:
--------------------------------------------------------------------------------
1 | import $X as $Y


--------------------------------------------------------------------------------
/tests/patterns/julia/import_import.sgrep:
--------------------------------------------------------------------------------
1 | import $X


--------------------------------------------------------------------------------
/tests/patterns/julia/import_metavar.sgrep:
--------------------------------------------------------------------------------
1 | using $MODULE


--------------------------------------------------------------------------------
/tests/patterns/julia/let_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | let
2 |   ...
3 | end


--------------------------------------------------------------------------------
/tests/patterns/julia/op_plus.jl:
--------------------------------------------------------------------------------
1 | # MATCH:
2 | 1+2
3 | 
4 | 1|2
5 | 


--------------------------------------------------------------------------------
/tests/patterns/julia/op_plus.sgrep:
--------------------------------------------------------------------------------
1 | $A+$B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/julia/using_alias.sgrep:
--------------------------------------------------------------------------------
1 | using $X as $Y


--------------------------------------------------------------------------------
/tests/patterns/julia/using_import.sgrep:
--------------------------------------------------------------------------------
1 | using $X


--------------------------------------------------------------------------------
/tests/patterns/kotlin/anonymous_metavar.kt:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/kotlin/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | bar()
3 | 


--------------------------------------------------------------------------------
/tests/patterns/kotlin/in_class_const_prop.sgrep:
--------------------------------------------------------------------------------
1 | ($X : T).foo


--------------------------------------------------------------------------------
/tests/patterns/kotlin/in_class_typing.sgrep:
--------------------------------------------------------------------------------
1 | foo(5)


--------------------------------------------------------------------------------
/tests/patterns/kotlin/interpolated_ident.sgrep:
--------------------------------------------------------------------------------
1 | "...${...}..."


--------------------------------------------------------------------------------
/tests/patterns/kotlin/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if ($E)
2 |     foo()
3 | 


--------------------------------------------------------------------------------
/tests/patterns/kotlin/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | import java.util.$X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/kotlin/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if ($X > $Y)
2 |     $S
3 | 


--------------------------------------------------------------------------------
/tests/patterns/kotlin/metavar_typed.sgrep:
--------------------------------------------------------------------------------
1 | $X == ($Y : String)


--------------------------------------------------------------------------------
/tests/patterns/kotlin/misc_call_in_assign.sgrep:
--------------------------------------------------------------------------------
1 | $F(...).$FIELD = $VAR


--------------------------------------------------------------------------------
/tests/patterns/kotlin/not_string_metavar.sgrep:
--------------------------------------------------------------------------------
1 | "hi $THERE"


--------------------------------------------------------------------------------
/tests/patterns/kotlin/single_interpolated_ident.sgrep:
--------------------------------------------------------------------------------
1 | "${temp}"


--------------------------------------------------------------------------------
/tests/patterns/kotlin/string_metavar.sgrep:
--------------------------------------------------------------------------------
1 | "$X"


--------------------------------------------------------------------------------
/tests/patterns/lua/anonymous_metavar.lua:
--------------------------------------------------------------------------------
1 | 
2 | -- ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/lua/assignment.sgrep:
--------------------------------------------------------------------------------
1 | $X = $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/lua/comparison.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/move_on_aptos/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo();
2 | bar();


--------------------------------------------------------------------------------
/tests/patterns/move_on_aptos/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | foo(b"...")


--------------------------------------------------------------------------------
/tests/patterns/move_on_aptos/misc_address_value.sgrep:
--------------------------------------------------------------------------------
1 | @$VAL


--------------------------------------------------------------------------------
/tests/patterns/move_on_aptos/misc_vector_value.sgrep:
--------------------------------------------------------------------------------
1 | vector[...]


--------------------------------------------------------------------------------
/tests/patterns/move_on_sui/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/move_on_sui/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo();
2 | bar();


--------------------------------------------------------------------------------
/tests/patterns/move_on_sui/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | foo(b"...")


--------------------------------------------------------------------------------
/tests/patterns/move_on_sui/metavar_anno.sgrep:
--------------------------------------------------------------------------------
1 | fun $SOME_FUN(...) : ...


--------------------------------------------------------------------------------
/tests/patterns/move_on_sui/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | use std::object::{$MEM1};


--------------------------------------------------------------------------------
/tests/patterns/ocaml/aliasing_qualified.sgrep:
--------------------------------------------------------------------------------
1 | AST_generic.fb $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/concrete_syntax.sgrep:
--------------------------------------------------------------------------------
1 | foo 1 2
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/dots_args.sgrep:
--------------------------------------------------------------------------------
1 | foo ... 5
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/dots_let_body.sgrep:
--------------------------------------------------------------------------------
1 | let $X = ... in
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/dots_nested_stmts.sgrep:
--------------------------------------------------------------------------------
1 | if ... then ... else ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | let $F ... = 1
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/dots_string.sgrep:
--------------------------------------------------------------------------------
1 | foo "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/equivalence_number.sgrep:
--------------------------------------------------------------------------------
1 | 1000
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/foo.sgrep:
--------------------------------------------------------------------------------
1 | Pervasives.$X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/local_open.sgrep:
--------------------------------------------------------------------------------
1 | Foo.bar ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/metavar_arg.sgrep:
--------------------------------------------------------------------------------
1 | foo $X 2
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/metavar_call.sgrep:
--------------------------------------------------------------------------------
1 | $F 1 2
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if $E then foo else $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/metavar_equality_expr.sgrep:
--------------------------------------------------------------------------------
1 | $X = $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/metavar_func_def.sgrep:
--------------------------------------------------------------------------------
1 | let $X ... = ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if $X > $Y then $S else $M
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/misc_ctor_one_arg.sgrep:
--------------------------------------------------------------------------------
1 | Foo $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/misc_functor.sgrep:
--------------------------------------------------------------------------------
1 | try ... with _ -> ...


--------------------------------------------------------------------------------
/tests/patterns/ocaml/misc_match_case.sgrep:
--------------------------------------------------------------------------------
1 | | _ -> $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/misc_notokenloc.sgrep:
--------------------------------------------------------------------------------
1 | $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/misc_try.sgrep:
--------------------------------------------------------------------------------
1 | try ... with ... -> ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/misc_useless_else.sgrep:
--------------------------------------------------------------------------------
1 | if $E then $E2 else ()
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/partial_if.sgrep:
--------------------------------------------------------------------------------
1 | if $X = $Y
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/partial_let.sgrep:
--------------------------------------------------------------------------------
1 | let $X = $BODY in
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/partial_match.sgrep:
--------------------------------------------------------------------------------
1 | match $E
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/partial_try.sgrep:
--------------------------------------------------------------------------------
1 | try $BODY
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ocaml/regexp.sgrep:
--------------------------------------------------------------------------------
1 | "=~/.*\/tmp/"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/backed_enum.sgrep:
--------------------------------------------------------------------------------
1 | $VAR = Suit::Clubs
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/case_insensitive_function_id.sgrep:
--------------------------------------------------------------------------------
1 | foo


--------------------------------------------------------------------------------
/tests/patterns/php/constant_propogation.sgrep:
--------------------------------------------------------------------------------
1 | exec('...', ...)


--------------------------------------------------------------------------------
/tests/patterns/php/cp_builtin.sgrep:
--------------------------------------------------------------------------------
1 | exec("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/cp_global.sgrep:
--------------------------------------------------------------------------------
1 | exec("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/cp_import.sgrep:
--------------------------------------------------------------------------------
1 | include("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_args_in_block.sgrep:
--------------------------------------------------------------------------------
1 | do_something(...);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_args_isset.sgrep:
--------------------------------------------------------------------------------
1 | isset(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_array.sgrep:
--------------------------------------------------------------------------------
1 | $ARRAY = [...];
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_backquote.sgrep:
--------------------------------------------------------------------------------
1 | `...`;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_echo.php:
--------------------------------------------------------------------------------
1 | <?php
2 | //ERROR:
3 | echo 'hello';
4 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_echo.sgrep:
--------------------------------------------------------------------------------
1 | echo ...;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_eval.sgrep:
--------------------------------------------------------------------------------
1 | eval(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_include.sgrep:
--------------------------------------------------------------------------------
1 | include ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_include1.sgrep:
--------------------------------------------------------------------------------
1 | include(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/dots_interpolated.sgrep:
--------------------------------------------------------------------------------
1 | $X = "$MSG{$VAL}...";


--------------------------------------------------------------------------------
/tests/patterns/php/foo.php:
--------------------------------------------------------------------------------
1 | <?php
2 | 
3 | //ERROR: match
4 | foo(1);
5 | 


--------------------------------------------------------------------------------
/tests/patterns/php/foo.sgrep:
--------------------------------------------------------------------------------
1 | foo($X)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/gh_5594.sgrep:
--------------------------------------------------------------------------------
1 | $this->logger->info(...);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/gh_5880.sgrep:
--------------------------------------------------------------------------------
1 | die(...);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/metavar_anno.sgrep:
--------------------------------------------------------------------------------
1 | #[$ATTR]
2 | class $F { ... }
3 | 


--------------------------------------------------------------------------------
/tests/patterns/php/metavar_underscore.sgrep:
--------------------------------------------------------------------------------
1 | $_COOKIE[$VALUE]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/misc_boolean_propagation.sgrep:
--------------------------------------------------------------------------------
1 | f(false);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/misc_goto.sgrep:
--------------------------------------------------------------------------------
1 | goto $X;


--------------------------------------------------------------------------------
/tests/patterns/php/named_arguments.sgrep:
--------------------------------------------------------------------------------
1 | setcookie(...,secure:true)


--------------------------------------------------------------------------------
/tests/patterns/php/naming_origname_use_group.sgrep:
--------------------------------------------------------------------------------
1 | Foo\Baz\fn_b
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/naming_rename_use_group.sgrep:
--------------------------------------------------------------------------------
1 | new Foo\Bar\ClassC()
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/sgrep/argref.php:
--------------------------------------------------------------------------------
1 | <?php
2 | 
3 | foo($x, &$y);
4 | 


--------------------------------------------------------------------------------
/tests/patterns/php/sgrep/dots_in_brackets.php:
--------------------------------------------------------------------------------
1 | $foo[...]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/sgrep/expr_pattern.php:
--------------------------------------------------------------------------------
1 | foo(1,2)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/sgrep/foo_expr.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/sgrep/multi.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | bar()
3 | 


--------------------------------------------------------------------------------
/tests/patterns/php/sgrep/regexp.sgrep:
--------------------------------------------------------------------------------
1 | foo('=~/.*_CONSTANT/')
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/sgrep/statement_pattern.php:
--------------------------------------------------------------------------------
1 | foo(1,2);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/bar.exp:
--------------------------------------------------------------------------------
1 | <?php
2 | 
3 | bar(2,1);
4 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/bar.php:
--------------------------------------------------------------------------------
1 | <?php
2 | 
3 | foo(1,2);
4 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/bar.spatch:
--------------------------------------------------------------------------------
1 | -   foo(X,Y)
2 | +   bar(Y,X)
3 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/errors/missing_paren.spatch:
--------------------------------------------------------------------------------
1 | -foo (
2 |  ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/new.spatch:
--------------------------------------------------------------------------------
1 | -foo(X, Y)
2 | +foo_new(X, Y)
3 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/remove_space_between.spatch:
--------------------------------------------------------------------------------
1 | - foo(X, Y)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/remove_trailing_comment.spatch:
--------------------------------------------------------------------------------
1 | - foo(X);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/remove_whole_line.spatch:
--------------------------------------------------------------------------------
1 | - foo(X);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/static_scalar.spatch:
--------------------------------------------------------------------------------
1 | - 1
2 | + 2
3 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/todo/1.php:
--------------------------------------------------------------------------------
1 | <?php
2 | 1;
3 | 
4 | 


--------------------------------------------------------------------------------
/tests/patterns/php/spatch/xhp_metavar.spatch:
--------------------------------------------------------------------------------
1 | - foo(X, Y)
2 | + bar(X)
3 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/anonymous_metavar.promql:
--------------------------------------------------------------------------------
1 | 
2 | # ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/promql/binary_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ... > ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/func.sgrep:
--------------------------------------------------------------------------------
1 | $F(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/grouping.sgrep:
--------------------------------------------------------------------------------
1 | $AGG by (..., a,...) (...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/selector.sgrep:
--------------------------------------------------------------------------------
1 | $METRIC{..., a="b", ...}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/selector_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | {...}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/selector_with_name_label.sgrep:
--------------------------------------------------------------------------------
1 | foo
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/selector_without_labels.sgrep:
--------------------------------------------------------------------------------
1 | some_metric{}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/subquery.sgrep:
--------------------------------------------------------------------------------
1 | $F((...)[$RANGE:])
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/subquery_in_func.sgrep:
--------------------------------------------------------------------------------
1 | (...)[$D:$R]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/promql/subquery_vs_range_selector.sgrep:
--------------------------------------------------------------------------------
1 | (...)[$D:]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/protobuf/simple.sgrep:
--------------------------------------------------------------------------------
1 | message $X {
2 |     ...
3 | }


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_dots.sgrep:
--------------------------------------------------------------------------------
1 | A & ... & B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_dots1.sgrep:
--------------------------------------------------------------------------------
1 | A | B | ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_explosion.sgrep:
--------------------------------------------------------------------------------
1 | $A & $B & $C
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_explosion1.sgrep:
--------------------------------------------------------------------------------
1 | A | $B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_free.sgrep:
--------------------------------------------------------------------------------
1 | A & B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_free1.sgrep:
--------------------------------------------------------------------------------
1 | A | B | B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_if1.sgrep:
--------------------------------------------------------------------------------
1 | if B | C:
2 | 	foo()
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_mvars.sgrep:
--------------------------------------------------------------------------------
1 | A & $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_mvars1.sgrep:
--------------------------------------------------------------------------------
1 | A | B | $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/ac_matching_mvars2.sgrep:
--------------------------------------------------------------------------------
1 | $X & $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/aliasing_and_direct.sgrep:
--------------------------------------------------------------------------------
1 | $F = Flask(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/already_resolved_with_wildcard.sgrep:
--------------------------------------------------------------------------------
1 | B.foo()


--------------------------------------------------------------------------------
/tests/patterns/python/anonymous_metavar.py:
--------------------------------------------------------------------------------
1 | 
2 | # ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/python/any_qualified_with_wildcard.sgrep:
--------------------------------------------------------------------------------
1 | $X.$Y


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_bug.sgrep:
--------------------------------------------------------------------------------
1 | $D = $D or []
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_dots.sgrep:
--------------------------------------------------------------------------------
1 | A and ... and B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_dots1.sgrep:
--------------------------------------------------------------------------------
1 | ... or A or B or ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_explosion.sgrep:
--------------------------------------------------------------------------------
1 | A and $X and Z
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_free.sgrep:
--------------------------------------------------------------------------------
1 | A and B and C
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_free1.sgrep:
--------------------------------------------------------------------------------
1 | A or B or B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_mvars.sgrep:
--------------------------------------------------------------------------------
1 | A and $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/assoc_matching_mvars1.sgrep:
--------------------------------------------------------------------------------
1 | A or B or $X or ...


--------------------------------------------------------------------------------
/tests/patterns/python/concrete_fstring.sgrep:
--------------------------------------------------------------------------------
1 | foo
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/constprop_dataflow.sgrep:
--------------------------------------------------------------------------------
1 | foo("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_concat.sgrep:
--------------------------------------------------------------------------------
1 | "password"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_eval1.sgrep:
--------------------------------------------------------------------------------
1 | eval("...")
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_eval2.sgrep:
--------------------------------------------------------------------------------
1 | eval("...")
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_exception.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_label.sgrep:
--------------------------------------------------------------------------------
1 | "foo"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_label1.py:
--------------------------------------------------------------------------------
1 | a = "foo"
2 | #ERROR:
3 | b[a] = 1
4 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_label1.sgrep:
--------------------------------------------------------------------------------
1 | $X["foo"]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_method_call.sgrep:
--------------------------------------------------------------------------------
1 | "...".format(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_python_mult_string1.sgrep:
--------------------------------------------------------------------------------
1 | foo("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_rlval.sgrep:
--------------------------------------------------------------------------------
1 | "foo"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_string_mvar.sgrep:
--------------------------------------------------------------------------------
1 | return "$X"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_strings.sgrep:
--------------------------------------------------------------------------------
1 | return "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_with.sgrep:
--------------------------------------------------------------------------------
1 | print("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/cp_yield.sgrep:
--------------------------------------------------------------------------------
1 | yield 42
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | bar()


--------------------------------------------------------------------------------
/tests/patterns/python/df_input.sgrep:
--------------------------------------------------------------------------------
1 | set_password("...")
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_expr.py:
--------------------------------------------------------------------------------
1 | #ERROR: match
2 | X = 1
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_expr_plus.sgrep:
--------------------------------------------------------------------------------
1 | $X = 1 + 2 + ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_fstring.sgrep:
--------------------------------------------------------------------------------
1 | f"..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_inherit.sgrep:
--------------------------------------------------------------------------------
1 | class A(...):
2 |   ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_list.sgrep:
--------------------------------------------------------------------------------
1 | [...]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | def foo(...):
2 |   return 1
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_return.sgrep:
--------------------------------------------------------------------------------
1 | return ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_tuples.py:
--------------------------------------------------------------------------------
1 | #ERROR: match
2 | a = (1, 2, 3)
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/dots_tuples.sgrep:
--------------------------------------------------------------------------------
1 | $X = (1, ...)
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/equivalence_constant_propagation.sgrep:
--------------------------------------------------------------------------------
1 | bar("secret")


--------------------------------------------------------------------------------
/tests/patterns/python/equivalence_interpolated_str.sgrep:
--------------------------------------------------------------------------------
1 | $X = "..."


--------------------------------------------------------------------------------
/tests/patterns/python/equivalence_interpolated_str2.sgrep:
--------------------------------------------------------------------------------
1 | $FUNC("...")


--------------------------------------------------------------------------------
/tests/patterns/python/equivalence_naming_import.sgrep:
--------------------------------------------------------------------------------
1 | subprocess.open(...)


--------------------------------------------------------------------------------
/tests/patterns/python/import_metavar_fullpath.sgrep:
--------------------------------------------------------------------------------
1 | import $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/import_negatives.sgrep:
--------------------------------------------------------------------------------
1 | import foo.bar.baz


--------------------------------------------------------------------------------
/tests/patterns/python/import_negatives2.sgrep:
--------------------------------------------------------------------------------
1 | from foo.bar import baz


--------------------------------------------------------------------------------
/tests/patterns/python/imports.sgrep:
--------------------------------------------------------------------------------
1 | import foo.bar


--------------------------------------------------------------------------------
/tests/patterns/python/index_tuple.sgrep:
--------------------------------------------------------------------------------
1 | 1, 2
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/less_inherits.sgrep:
--------------------------------------------------------------------------------
1 | class A:
2 |   ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/less_typehint.sgrep:
--------------------------------------------------------------------------------
1 | def $F(filename):
2 |   ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_class_def.sgrep:
--------------------------------------------------------------------------------
1 | class $X:
2 |     ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if $E:
2 |    foo()
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_dict.sgrep:
--------------------------------------------------------------------------------
1 | { ..., $K: $V, ...}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_func_def.sgrep:
--------------------------------------------------------------------------------
1 | def $X(...):
2 |     ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | import foo.$BAR


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_iterator.sgrep:
--------------------------------------------------------------------------------
1 | [$X for $X in $ITERATOR]


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_set.sgrep:
--------------------------------------------------------------------------------
1 | { ..., $X, ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if var > 2:
2 |    $S
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_tuple.py:
--------------------------------------------------------------------------------
1 | # ERROR: match
2 | x = ()
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_tuple.sgrep:
--------------------------------------------------------------------------------
1 | x = $T
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/metavar_typed.sgrep:
--------------------------------------------------------------------------------
1 | foo($X: int)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_block_import.sgrep:
--------------------------------------------------------------------------------
1 | import foo.bar
2 | ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_comprehension.sgrep:
--------------------------------------------------------------------------------
1 | $Z = [ $X for $X in $Y]


--------------------------------------------------------------------------------
/tests/patterns/python/misc_encoded_string.sgrep:
--------------------------------------------------------------------------------
1 | url($PATH, $FUNC)


--------------------------------------------------------------------------------
/tests/patterns/python/misc_fake_propa.sgrep:
--------------------------------------------------------------------------------
1 | $X = 50
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_faketok1.sgrep:
--------------------------------------------------------------------------------
1 | click.echo(click.style($X, ...))


--------------------------------------------------------------------------------
/tests/patterns/python/misc_faketok2.sgrep:
--------------------------------------------------------------------------------
1 | "=~/.*bento.*/"


--------------------------------------------------------------------------------
/tests/patterns/python/misc_faketok3.sgrep:
--------------------------------------------------------------------------------
1 | [...]
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_match_stmt.sgrep:
--------------------------------------------------------------------------------
1 | print(...)


--------------------------------------------------------------------------------
/tests/patterns/python/misc_metavar_vs_fstring.sgrep:
--------------------------------------------------------------------------------
1 | $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_paren.sgrep:
--------------------------------------------------------------------------------
1 | cursor.execute("..." % ...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_prefix_string.sgrep:
--------------------------------------------------------------------------------
1 | $X != $X


--------------------------------------------------------------------------------
/tests/patterns/python/misc_return_empty.sgrep:
--------------------------------------------------------------------------------
1 | return $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_stmts1.sgrep:
--------------------------------------------------------------------------------
1 | $X = $Y
2 | $X = $Z
3 | 


--------------------------------------------------------------------------------
/tests/patterns/python/misc_tuple2.sgrep:
--------------------------------------------------------------------------------
1 | return ( $ID, ($ARGS), $KWARGS )


--------------------------------------------------------------------------------
/tests/patterns/python/misc_with_no_rename.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/multi_import.sgrep:
--------------------------------------------------------------------------------
1 | from z import x, y
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/multi_qualified_wildcard.sgrep:
--------------------------------------------------------------------------------
1 | A.B.C.D.x


--------------------------------------------------------------------------------
/tests/patterns/python/parenthesized_with.sgrep:
--------------------------------------------------------------------------------
1 | 1


--------------------------------------------------------------------------------
/tests/patterns/python/python2.sgrep:
--------------------------------------------------------------------------------
1 | $FOO(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/regexp_string_backref.sgrep:
--------------------------------------------------------------------------------
1 | $X = "=~/^(.)\1+$/"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/scoped_wildcard.sgrep:
--------------------------------------------------------------------------------
1 | A.x


--------------------------------------------------------------------------------
/tests/patterns/python/set_vs_dict.sgrep:
--------------------------------------------------------------------------------
1 | { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/set_vs_dict2.sgrep:
--------------------------------------------------------------------------------
1 | {..., "foo" : $VALUE, ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/set_vs_dict3.sgrep:
--------------------------------------------------------------------------------
1 | { ..., "foo", ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/standalone_decorator.sgrep:
--------------------------------------------------------------------------------
1 | @$NAME($...PA)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/stmts_to_fields.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | ...
3 | bar()


--------------------------------------------------------------------------------
/tests/patterns/python/visitor_def.sgrep:
--------------------------------------------------------------------------------
1 | def __eq__(...): ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/python/wildcard_qualified.sgrep:
--------------------------------------------------------------------------------
1 | A.x


--------------------------------------------------------------------------------
/tests/patterns/python/wildcard_qualified_mvar.sgrep:
--------------------------------------------------------------------------------
1 | $A.x


--------------------------------------------------------------------------------
/tests/patterns/ql/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>)


--------------------------------------------------------------------------------
/tests/patterns/ql/dots_expr.sgrep:
--------------------------------------------------------------------------------
1 | // ERROR:
2 | 1 and ...


--------------------------------------------------------------------------------
/tests/patterns/ql/dots_module.sgrep:
--------------------------------------------------------------------------------
1 | module $X {
2 |   ...
3 | }


--------------------------------------------------------------------------------
/tests/patterns/ql/dots_predicate.sgrep:
--------------------------------------------------------------------------------
1 | predicate foo(...) { ... }


--------------------------------------------------------------------------------
/tests/patterns/ql/metavar_anno.ql:
--------------------------------------------------------------------------------
1 | // ERROR:
2 | select foo[bar](2)


--------------------------------------------------------------------------------
/tests/patterns/ql/metavar_anno.sgrep:
--------------------------------------------------------------------------------
1 | foo[$Y]($Z)


--------------------------------------------------------------------------------
/tests/patterns/ql/metavar_equality_expr.sgrep:
--------------------------------------------------------------------------------
1 | $X = $X


--------------------------------------------------------------------------------
/tests/patterns/r/anonymous_metavar.r:
--------------------------------------------------------------------------------
1 | 
2 | # ERROR:
3 | 1


--------------------------------------------------------------------------------
/tests/patterns/ruby/anonymous_metavar.rb:
--------------------------------------------------------------------------------
1 | 
2 | # ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/ruby/blocks.sgrep:
--------------------------------------------------------------------------------
1 | f($X)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/blocks1.sgrep:
--------------------------------------------------------------------------------
1 | f($X, $Y)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/call_expr_property.sgrep:
--------------------------------------------------------------------------------
1 | foo.$X()


--------------------------------------------------------------------------------
/tests/patterns/ruby/command_call_with_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | bar(foo ...)


--------------------------------------------------------------------------------
/tests/patterns/ruby/cp_assign.sgrep:
--------------------------------------------------------------------------------
1 | foo("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/cp_concat.sgrep:
--------------------------------------------------------------------------------
1 | test("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/cp_interpolated.sgrep:
--------------------------------------------------------------------------------
1 | foo("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/cp_string_mutable.sgrep:
--------------------------------------------------------------------------------
1 | test("...")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/deep_exprstmt.sgrep:
--------------------------------------------------------------------------------
1 | foo()
2 | bar()


--------------------------------------------------------------------------------
/tests/patterns/ruby/dots_atom.sgrep:
--------------------------------------------------------------------------------
1 | :...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/dots_interpolated_string.sgrep:
--------------------------------------------------------------------------------
1 | x = "...#{...}..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/dots_multiple_interpolated.sgrep:
--------------------------------------------------------------------------------
1 | `...#{...}...`
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/dots_regexp.sgrep:
--------------------------------------------------------------------------------
1 | /.../


--------------------------------------------------------------------------------
/tests/patterns/ruby/dots_struct_new.sgrep:
--------------------------------------------------------------------------------
1 | Struct.new(...)


--------------------------------------------------------------------------------
/tests/patterns/ruby/foo.sgrep:
--------------------------------------------------------------------------------
1 | puts "..."
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/implicit_return.sgrep:
--------------------------------------------------------------------------------
1 | return $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/lambda.sgrep:
--------------------------------------------------------------------------------
1 | $FOO = -> (...) {...}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/metavar_atom.sgrep:
--------------------------------------------------------------------------------
1 | foo(:$ATOM)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/metavar_classname.sgrep:
--------------------------------------------------------------------------------
1 | class $A
2 | end
3 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if $E
2 |    foo()
3 | end
4 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/metavar_import.rb:
--------------------------------------------------------------------------------
1 | #ERROR: match
2 | require 'foo'
3 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | require $R
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/metavar_interpolated.sgrep:
--------------------------------------------------------------------------------
1 | $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/metavar_regexp.sgrep:
--------------------------------------------------------------------------------
1 | foo(/$X/, "$X")
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_backtick_interp.sgrep:
--------------------------------------------------------------------------------
1 | `...#{$VAL}...`
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_backticks.sgrep:
--------------------------------------------------------------------------------
1 | `...`
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_bitand.sgrep:
--------------------------------------------------------------------------------
1 | $A & $B
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_div0.sgrep:
--------------------------------------------------------------------------------
1 | $X / 0
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_dot_call.sgrep:
--------------------------------------------------------------------------------
1 | $FOO
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_dotaccess.sgrep:
--------------------------------------------------------------------------------
1 | generator.hex
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_empty_token1.sgrep:
--------------------------------------------------------------------------------
1 | $STR.html_safe
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_hidden_call.sgrep:
--------------------------------------------------------------------------------
1 | foo(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_kwdarg2.sgrep:
--------------------------------------------------------------------------------
1 | foo kwd1: $X, ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_kwdarg_dots.rb:
--------------------------------------------------------------------------------
1 | #ERROR: match
2 | foo(bar: 1)
3 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_kwdarg_dots.sgrep:
--------------------------------------------------------------------------------
1 | foo(bar:...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_multiple_assign.rb:
--------------------------------------------------------------------------------
1 | # ERROR: 
2 | a, b = 1, 2
3 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_multiple_assign.sgrep:
--------------------------------------------------------------------------------
1 | a = 1
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_multiple_assign_uneq_lists.rb:
--------------------------------------------------------------------------------
1 | a, b = foo
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_multiple_assign_uneq_lists.sgrep:
--------------------------------------------------------------------------------
1 | a = foo
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_parsing1.sgrep:
--------------------------------------------------------------------------------
1 | FOO
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_parsing2.sgrep:
--------------------------------------------------------------------------------
1 | $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/misc_range.sgrep:
--------------------------------------------------------------------------------
1 | ($X .. $Y)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/regexp_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | /.../


--------------------------------------------------------------------------------
/tests/patterns/ruby/regexp_literal.sgrep:
--------------------------------------------------------------------------------
1 | /a/
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/regexp_metavar.sgrep:
--------------------------------------------------------------------------------
1 | /$V/
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ruby/regexp_template.sgrep:
--------------------------------------------------------------------------------
1 | /.../
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/anonymous_metavar.rs:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2;


--------------------------------------------------------------------------------
/tests/patterns/rust/cp_expr_stmt_if.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/dots_field_chaining.sgrep:
--------------------------------------------------------------------------------
1 | s. ... .z
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/dots_macro_call.sgrep:
--------------------------------------------------------------------------------
1 | println!(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/dots_mod.sgrep:
--------------------------------------------------------------------------------
1 | mod tests { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/dots_struct.sgrep:
--------------------------------------------------------------------------------
1 | struct $FOO {
2 |   ...
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/epattern_type_prop.sgrep:
--------------------------------------------------------------------------------
1 | sink(($X : T))
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/implicit_return.sgrep:
--------------------------------------------------------------------------------
1 | return $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_class_def.sgrep:
--------------------------------------------------------------------------------
1 | struct $FOO { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if ($E) {
2 |    foo();
3 | }


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | fn $FUNC() {
2 |   $...X
3 | }


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_func_def.sgrep:
--------------------------------------------------------------------------------
1 | fn $FOO(...) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | use $X;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_param.sgrep:
--------------------------------------------------------------------------------
1 | fn $F($X, ...) { ... }


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_standalone.rs:
--------------------------------------------------------------------------------
1 | // ERROR:
2 | 4;


--------------------------------------------------------------------------------
/tests/patterns/rust/metavar_standalone.sgrep:
--------------------------------------------------------------------------------
1 | $X


--------------------------------------------------------------------------------
/tests/patterns/rust/misc_macrocall.sgrep:
--------------------------------------------------------------------------------
1 | $F(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/misc_return_3.sgrep:
--------------------------------------------------------------------------------
1 | 3
2 | 


--------------------------------------------------------------------------------
/tests/patterns/rust/misc_scoped_idents.sgrep:
--------------------------------------------------------------------------------
1 | A::$X


--------------------------------------------------------------------------------
/tests/patterns/rust/misc_scoped_idents_as.sgrep:
--------------------------------------------------------------------------------
1 | A::B::f


--------------------------------------------------------------------------------
/tests/patterns/scala/anonymous_metavar.scala:
--------------------------------------------------------------------------------
1 | // ERROR:
2 | 2


--------------------------------------------------------------------------------
/tests/patterns/scala/apply_as_new.sgrep:
--------------------------------------------------------------------------------
1 | new $NAME()


--------------------------------------------------------------------------------
/tests/patterns/scala/catch_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | try { ... } catch { ... }


--------------------------------------------------------------------------------
/tests/patterns/scala/class_params.sgrep:
--------------------------------------------------------------------------------
1 | ($OBJ : TypeName).foo


--------------------------------------------------------------------------------
/tests/patterns/scala/custom_interpolated.sgrep:
--------------------------------------------------------------------------------
1 | abcd"..."


--------------------------------------------------------------------------------
/tests/patterns/scala/dots_atom.sgrep:
--------------------------------------------------------------------------------
1 | '...
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/scala/dots_match.sgrep:
--------------------------------------------------------------------------------
1 | $X match { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/scala/equivalence_naming_import.sgrep:
--------------------------------------------------------------------------------
1 | subprocess.open(...)


--------------------------------------------------------------------------------
/tests/patterns/scala/implicit_return.sgrep:
--------------------------------------------------------------------------------
1 | return $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/scala/import_metavariable.sgrep:
--------------------------------------------------------------------------------
1 | import $X


--------------------------------------------------------------------------------
/tests/patterns/scala/infix_method.sgrep:
--------------------------------------------------------------------------------
1 | $XS.map($F)


--------------------------------------------------------------------------------
/tests/patterns/scala/metavar_atom.sgrep:
--------------------------------------------------------------------------------
1 | '$X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/scala/metavar_cond.sgrep:
--------------------------------------------------------------------------------
1 | if ($E) {
2 |     foo()
3 | }


--------------------------------------------------------------------------------
/tests/patterns/scala/metavar_func_def.sgrep:
--------------------------------------------------------------------------------
1 | def $FUNC(...) : $T = ...


--------------------------------------------------------------------------------
/tests/patterns/scala/metavar_key_value.sgrep:
--------------------------------------------------------------------------------
1 | Map(..., $KEY -> $VALUE, ...)


--------------------------------------------------------------------------------
/tests/patterns/scala/metavar_pat.sgrep:
--------------------------------------------------------------------------------
1 | $X match { case $V => ... }


--------------------------------------------------------------------------------
/tests/patterns/scala/metavar_stmt.sgrep:
--------------------------------------------------------------------------------
1 | if ($E) {
2 |     $S
3 | }


--------------------------------------------------------------------------------
/tests/patterns/scala/metavar_typed.sgrep:
--------------------------------------------------------------------------------
1 | foo($X : Int)


--------------------------------------------------------------------------------
/tests/patterns/scala/minus_identifier.sgrep:
--------------------------------------------------------------------------------
1 | val - = ...


--------------------------------------------------------------------------------
/tests/patterns/scala/misc_symbol.sgrep:
--------------------------------------------------------------------------------
1 | 'Foo
2 | 


--------------------------------------------------------------------------------
/tests/patterns/scala/pat_def.sgrep:
--------------------------------------------------------------------------------
1 | val List(...) = ...


--------------------------------------------------------------------------------
/tests/patterns/scala/pat_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | val List(...,bad,...) = ...


--------------------------------------------------------------------------------
/tests/patterns/scala/tuple_def.sgrep:
--------------------------------------------------------------------------------
1 | val ($A,$B) = ...


--------------------------------------------------------------------------------
/tests/patterns/solidity/anonymous_metavar.sol:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 1;


--------------------------------------------------------------------------------
/tests/patterns/solidity/dots_contract.sgrep:
--------------------------------------------------------------------------------
1 | contract $C { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/solidity/misc_enum.sgrep:
--------------------------------------------------------------------------------
1 | enum $ENUM { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/solidity/misc_event.sgrep:
--------------------------------------------------------------------------------
1 | event $E(...);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/solidity/misc_unchecked.sgrep:
--------------------------------------------------------------------------------
1 | unchecked { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/swift/anonymous_metavar.swift:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2


--------------------------------------------------------------------------------
/tests/patterns/swift/class_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | class $CLASS { ... }


--------------------------------------------------------------------------------
/tests/patterns/swift/class_variants.sgrep:
--------------------------------------------------------------------------------
1 | class Foo {}
2 | 


--------------------------------------------------------------------------------
/tests/patterns/swift/dots_nested_stmts.sgrep:
--------------------------------------------------------------------------------
1 | if ... {
2 |   ...
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/swift/if_let.sgrep:
--------------------------------------------------------------------------------
1 | if let foo = bar { }


--------------------------------------------------------------------------------
/tests/patterns/swift/if_let.swift:
--------------------------------------------------------------------------------
1 | // MATCH:
2 | if let foo = bar { }


--------------------------------------------------------------------------------
/tests/patterns/swift/keypath.sgrep:
--------------------------------------------------------------------------------
1 | \$X.isRecent
2 | 


--------------------------------------------------------------------------------
/tests/patterns/swift/match_name.sgrep:
--------------------------------------------------------------------------------
1 | foo


--------------------------------------------------------------------------------
/tests/patterns/swift/semgrep_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ... + 1
2 | 


--------------------------------------------------------------------------------
/tests/patterns/swift/semgrep_ellipsis_no_semi.sgrep:
--------------------------------------------------------------------------------
1 | foo
2 | ...
3 | 


--------------------------------------------------------------------------------
/tests/patterns/swift/typed_metavar.sgrep:
--------------------------------------------------------------------------------
1 | ($X : t)


--------------------------------------------------------------------------------
/tests/patterns/swift/unbounded_range_ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | (...) + 1
2 | 


--------------------------------------------------------------------------------
/tests/patterns/terraform/deep_expr_operator.sgrep:
--------------------------------------------------------------------------------
1 | foo(<... 42 ...>)


--------------------------------------------------------------------------------
/tests/patterns/ts/anonymous_metavar.ts:
--------------------------------------------------------------------------------
1 | 
2 | // ERROR:
3 | 2;


--------------------------------------------------------------------------------
/tests/patterns/ts/deep_record.sgrep:
--------------------------------------------------------------------------------
1 | return <... location.href ...>
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/dots_params.sgrep:
--------------------------------------------------------------------------------
1 | function foo(...) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/dots_type_literal.sgrep:
--------------------------------------------------------------------------------
1 | type $X = "..." | "..."


--------------------------------------------------------------------------------
/tests/patterns/ts/equivalence_decl_vs_assign.sgrep:
--------------------------------------------------------------------------------
1 | $VAR = foo();
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/import_vN.sgrep:
--------------------------------------------------------------------------------
1 | import * as v8 from "v8";


--------------------------------------------------------------------------------
/tests/patterns/ts/import_vN.ts:
--------------------------------------------------------------------------------
1 | //ERROR:
2 | import * as v8 from "v8";


--------------------------------------------------------------------------------
/tests/patterns/ts/less_type_let.sgrep:
--------------------------------------------------------------------------------
1 | let $MSG = '...';
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/metavar_import.sgrep:
--------------------------------------------------------------------------------
1 | import $X from 'foo';
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/metavar_typed_class.sgrep:
--------------------------------------------------------------------------------
1 | ($X: C).f(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/metavar_typed_expr.sgrep:
--------------------------------------------------------------------------------
1 | $A == ($B : string)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_as_cast.sgrep:
--------------------------------------------------------------------------------
1 | $VAR = $EXPR as $TYPE;
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_ast.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_function.sgrep:
--------------------------------------------------------------------------------
1 | function foo() {
2 |  ...
3 | }
4 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_method.sgrep:
--------------------------------------------------------------------------------
1 | bar() { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_naming_recursion.sgrep:
--------------------------------------------------------------------------------
1 | $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_semicolon.sgrep:
--------------------------------------------------------------------------------
1 | foo(...);
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_semicolon.ts:
--------------------------------------------------------------------------------
1 | //ERROR: match
2 | foo(5);
3 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_type1.sgrep:
--------------------------------------------------------------------------------
1 | let $X : number = $Y;
2 | 
3 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_type2.sgrep:
--------------------------------------------------------------------------------
1 | function $F($X: int) { ... }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/misc_type3.sgrep:
--------------------------------------------------------------------------------
1 | class $X { $FLD: int; }
2 | 


--------------------------------------------------------------------------------
/tests/patterns/ts/opt_chain.sgrep:
--------------------------------------------------------------------------------
1 | x?.y


--------------------------------------------------------------------------------
/tests/patterns/ts/record_functions.sgrep:
--------------------------------------------------------------------------------
1 | foo({
2 |   $THING: ...
3 | })


--------------------------------------------------------------------------------
/tests/patterns/ts/type_assert.sgrep:
--------------------------------------------------------------------------------
1 | (v8 as $T).$METH(...)
2 | 


--------------------------------------------------------------------------------
/tests/patterns/xml/misc_attribute_pattern.sgrep:
--------------------------------------------------------------------------------
1 | foo="true"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/anonymous_metavar.yaml:
--------------------------------------------------------------------------------
1 | 
2 | # ERROR:
3 | "foo"


--------------------------------------------------------------------------------
/tests/patterns/yaml/array_field_only.sgrep:
--------------------------------------------------------------------------------
1 | - "Job/Read"
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/empty.sgrep:
--------------------------------------------------------------------------------
1 | $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/metavar_field.sgrep:
--------------------------------------------------------------------------------
1 | - name: $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/metavar_field.yaml:
--------------------------------------------------------------------------------
1 | #ERROR: match
2 | - name: Emma
3 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/misc_other_formats_braces.sgrep:
--------------------------------------------------------------------------------
1 | hello: ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/post_unicode.sgrep:
--------------------------------------------------------------------------------
1 | other: $VALUE
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/semgrep/ellipses_only.sgrep:
--------------------------------------------------------------------------------
1 | ...
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/semgrep/field.sgrep:
--------------------------------------------------------------------------------
1 | language: $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/tag_literal.sgrep:
--------------------------------------------------------------------------------
1 | !thetag $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/tag_metavar.sgrep:
--------------------------------------------------------------------------------
1 | !$TAG $X
2 | 


--------------------------------------------------------------------------------
/tests/patterns/yaml/unicode.sgrep:
--------------------------------------------------------------------------------
1 | unicode: ジャパン
2 | 


--------------------------------------------------------------------------------
/tests/perf/bloom/stmts-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | ...
2 | foo($A);
3 | 


--------------------------------------------------------------------------------
/tests/perf/bloom/stmts-mv-ellipsis.sgrep:
--------------------------------------------------------------------------------
1 | $A;
2 | ...
3 | foo($A);
4 | 


--------------------------------------------------------------------------------
/tests/perf/eq.sgrep:
--------------------------------------------------------------------------------
1 | $X == $X


--------------------------------------------------------------------------------
/tests/rules/inception.yl:
--------------------------------------------------------------------------------
1 | inception.yaml


--------------------------------------------------------------------------------
/tests/rules/inception2.yl:
--------------------------------------------------------------------------------
1 | inception2.yaml


--------------------------------------------------------------------------------
/tests/rules/js_no_ts.yl:
--------------------------------------------------------------------------------
1 | js_no_ts.yaml


--------------------------------------------------------------------------------
/tests/rules/skip_list.txt:
--------------------------------------------------------------------------------
1 | file: lib_semgrep.jsonnet
2 | 


--------------------------------------------------------------------------------
/tests/rules/vardef_assign_false.js:
--------------------------------------------------------------------------------
1 | //OK:test
2 | var x = 1;
3 | 


--------------------------------------------------------------------------------
/tests/rules/vardef_assign_false1.js:
--------------------------------------------------------------------------------
1 | //OK:test
2 | var x = 1;
3 | 


--------------------------------------------------------------------------------
/tests/rules/vardef_assign_true.js:
--------------------------------------------------------------------------------
1 | //ruleid:test
2 | var x = 1;
3 | 


--------------------------------------------------------------------------------
/tests/rules/vardef_assign_true1.js:
--------------------------------------------------------------------------------
1 | //ruleid:test
2 | var x = 1;
3 | 


--------------------------------------------------------------------------------
/tests/rules/vardef_assign_true2.js:
--------------------------------------------------------------------------------
1 | //ruleid:test
2 | var x = 1;
3 | 


--------------------------------------------------------------------------------
/tests/rules/xml_metavar_comp2.xml:
--------------------------------------------------------------------------------
1 | <!-- ruleid: test -->
2 | <a>20</a>
3 | 


--------------------------------------------------------------------------------
/tests/snapshots/semgrep-core/2e75b85cd1f4/name:
--------------------------------------------------------------------------------
1 | Gitignore > unanchored
2 | 


--------------------------------------------------------------------------------
/tests/snapshots/semgrep-core/8128ddf1251b/stdout:
--------------------------------------------------------------------------------
1 | input list: []
2 | 


--------------------------------------------------------------------------------
/tests/windows/readme.txt:
--------------------------------------------------------------------------------
1 | used in build-test-windows-x86.jsonnet
2 | 


--------------------------------------------------------------------------------
/tests/windows/test.py:
--------------------------------------------------------------------------------
1 | print("foo")
2 | 


--------------------------------------------------------------------------------