{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "$comment": "https://lgtm.com/help/lgtm/lgtm.yml-configuration-file",
  "definitions": {
    "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"
          }
        }
      }
    }
  },
  "description": "Configuration file for lgtm, for continuous security analysis.",
  "id": "https://json.schemastore.org/lgtm.json",
  "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": "#/definitions/queryItem",
            "title": "Exclude",
            "description": "Hide the results for queries with the specified properties."
          },
          "include": {
            "$ref": "#/definitions/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
              }
            }
          }
        }
      }
    }
  },
  "type": "object"
}
