{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/lgtm-yml/latest.json",
  "description": "Configuration file for lgtm, for continuous security analysis.",
  "x-lintel": {
    "source": "https://www.schemastore.org/lgtm.json",
    "sourceSha256": "ce81a40963d516942d3af867dea2b9b736318ad8e573f61c5fcea2b14080710e",
    "fileMatch": [
      "lgtm.yml",
      ".lgtm.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "path_classifiers": {
      "title": "Path Classifiers",
      "description": "Defines the tag that you want to modify. Usually this is a built-in tag, but you can define your own tags.",
      "type": "object",
      "additionalProperties": {
        "description": "Classify files on this path with the parent tag.",
        "type": "array",
        "items": {
          "type": [
            "string",
            "object"
          ],
          "properties": {
            "exclude": {
              "title": "Exclude",
              "description": "Do not classify files on this path with the parent tag.",
              "type": "string"
            }
          }
        }
      }
    },
    "queries": {
      "title": "Queries",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "title": "Query",
        "properties": {
          "exclude": {
            "$ref": "#/$defs/queryItem",
            "title": "Exclude",
            "description": "Hide the results for queries with the specified properties."
          },
          "include": {
            "$ref": "#/$defs/queryItem",
            "title": "Include",
            "description": "Show the results for queries with the specified properties."
          }
        }
      }
    },
    "extraction": {
      "title": "Extraction",
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "prepare": {
            "title": "Prepare",
            "description": "Customizable step used by all languages.",
            "type": "object",
            "properties": {
              "packages": {
                "title": "Packages",
                "description": "One or more packages to install.",
                "type": "array",
                "items": {
                  "title": "Package",
                  "type": "string"
                }
              }
            }
          },
          "after_prepare": {
            "title": "After Prepare",
            "description": "Customizable step used by all languages.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "before_index": {
            "title": "Before Index",
            "description": "Customizable step used by all languages.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "index": {
            "title": "Index",
            "description": "Customizable step used by all languages.",
            "type": "object",
            "properties": {
              "all_solutions": {
                "title": "All Solutions",
                "description": "Specify that all project or solution files should be used for extraction.",
                "type": "boolean",
                "default": false
              },
              "build_command": {
                "title": "Build Command",
                "type": [
                  "array",
                  "string"
                ],
                "items": {
                  "type": "string"
                }
              },
              "buildless": {
                "title": "Buildless",
                "description": "Specify whether or not to extract the codebase without building the code.",
                "type": "boolean",
                "default": false
              },
              "dotnet": {
                "title": ".NET",
                "type": "object",
                "properties": {
                  "arguments": {
                    "title": "Arguments",
                    "description": "Specify a list of additional arguments to dotnet build.",
                    "type": "array",
                    "items": {
                      "title": "Argument",
                      "type": "string"
                    },
                    "default": []
                  },
                  "version": {
                    "title": "Version",
                    "description": "Specify the version of the .NET Core SDK to use.",
                    "type": "string"
                  }
                }
              },
              "exclude": {
                "title": "Exclude",
                "description": "Specify a list of files and folders to exclude from extraction. Each path is specified by defining paths relative to LGTM_SRC.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "filetypes": {
                "title": "Filetypes",
                "description": "Specify additional file types to extract.",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "gradle": {
                "title": "Gradle",
                "type": "object",
                "properties": {
                  "version": {
                    "title": "Version",
                    "type": [
                      "string",
                      "number"
                    ]
                  }
                }
              },
              "include": {
                "title": "Include",
                "description": "Specify a list of files and folders to scan for files to extract.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "java_version": {
                "title": "Java Version",
                "description": "Specify the Java version required to build the project.",
                "type": [
                  "string",
                  "number"
                ]
              },
              "maven": {
                "title": "Maven",
                "description": "Specify Maven settings to use by specifying one or more of the maven subproperties detailed below.",
                "type": "object",
                "properties": {
                  "settings_file": {
                    "title": "Settings File",
                    "description": "Specify the path (absolute or relative) of a Maven settings file to use.",
                    "type": "string"
                  },
                  "toolchains_file": {
                    "title": "Toolchains File",
                    "description": "Specify the path of a Maven toolchains file to use.",
                    "type": "string"
                  },
                  "version": {
                    "title": "Version",
                    "description": "Specify the required Maven version.",
                    "type": [
                      "string",
                      "number"
                    ]
                  }
                }
              },
              "msbuild": {
                "title": "MSBuild",
                "type": "object",
                "properties": {
                  "arguments": {
                    "title": "Arguments",
                    "description": "Specify a list of additional arguments to MSBuild.",
                    "type": "array",
                    "items": {
                      "title": "Argument",
                      "type": "string"
                    }
                  },
                  "configuration": {
                    "title": "Configuration",
                    "description": "Specify the MSBuild configuration to use, for example, debug or release.",
                    "type": "string"
                  },
                  "platform": {
                    "title": "Platform",
                    "description": "Specify the platform to target, for example: x86, x64, or Any CPU.",
                    "type": "string"
                  },
                  "target": {
                    "title": "Target",
                    "description": "Specify the MSBuild target.",
                    "type": "string",
                    "default": "rebuild"
                  }
                }
              },
              "nuget_restore": {
                "title": "NuGet Restore",
                "description": "Specify whether or not to perform a NuGet restore for extraction.",
                "type": "boolean",
                "default": true
              },
              "properties_files": {
                "title": "Properties Files",
                "description": "Specify whether .properties files are extracted.",
                "type": "boolean",
                "default": false
              },
              "solution": {
                "title": "Solution",
                "description": "Specify a list of one or more project or solution files for extraction.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "typescript": {
                "title": "TypeScript",
                "description": "Specify how TypeScript files should be extracted.",
                "enum": [
                  "none",
                  "basic",
                  "full"
                ],
                "default": "full"
              },
              "xml_mode": {
                "title": "XML Mode",
                "description": "Specify how XML files should be extracted.",
                "enum": [
                  "all",
                  "default",
                  "disabled"
                ]
              }
            }
          },
          "configure": {
            "title": "Configure",
            "description": "Customizable step used only by C/C++ extraction.",
            "type": "object",
            "properties": {
              "command": {
                "title": "Command",
                "description": "Override the default process by specifying a list of commands to run to generate the build configuration.",
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "python_setup": {
            "title": "Python Setup",
            "description": "This step is used only by Python blocks. It sets up the Python interpreter and virtual environment, ready for the index step to extract the codebase.",
            "type": "object",
            "properties": {
              "exclude_requirements": {
                "title": "Exclude Requirements",
                "description": "Specify packages to exclude from extraction/analysis.",
                "type": "array",
                "items": {
                  "title": "Package",
                  "type": "string"
                }
              },
              "requirements": {
                "title": "Requirements",
                "description": "Specify a list of pip packages to install. If any of these packages cannot be installed, the extraction will fail.",
                "type": "array",
                "items": {
                  "title": "Package",
                  "type": "string"
                }
              },
              "requirements_files": {
                "title": "Requirement Files",
                "description": "Specify a list of requirements text files to use to set up the environment, or false for none.",
                "type": [
                  "array",
                  "boolean"
                ],
                "items": {
                  "type": "string"
                }
              },
              "setup_py": {
                "title": "Setup Python",
                "description": "Specify a setup.py file to use to set up the environment, or false for none.",
                "type": "string"
              },
              "version": {
                "title": "Version",
                "description": "Override the version of the Python interpreter used for setup and extraction.",
                "type": [
                  "string",
                  "number"
                ],
                "default": 3
              }
            }
          }
        }
      }
    }
  },
  "id": "https://json.schemastore.org/lgtm.json",
  "$comment": "https://lgtm.com/help/lgtm/lgtm.yml-configuration-file",
  "$defs": {
    "queryItem": {
      "title": "Query",
      "type": "object",
      "properties": {
        "id": {
          "title": "ID",
          "description": "Use to identify a specific query whose results you want to include or exclude from display on LGTM.",
          "type": "string"
        },
        "severity": {
          "title": "Severity",
          "description": "Use to specify a single level of severity (error, warning or recommendation) for queries whose results you want to include or exclude from display.",
          "type": "string"
        },
        "tags": {
          "title": "Tags",
          "description": "Use to specify one or more tags for queries whose results you want to include or exclude from display.",
          "type": "array",
          "items": {
            "title": "Tag",
            "type": "string"
          }
        }
      }
    }
  }
}
