{"meta":{"title":"추출기 옵션","intro":"추출기 옵션을 사용하여 CodeQL CLI가 분석용 데이터베이스를 빌드하는 방식을 제어합니다.","product":"보안 및 코드 품질","breadcrumbs":[{"href":"/ko/code-security","title":"보안 및 코드 품질"},{"href":"/ko/code-security/reference","title":"Reference"},{"href":"/ko/code-security/reference/code-scanning","title":"코드 검사"},{"href":"/ko/code-security/reference/code-scanning/codeql","title":"CodeQL"},{"href":"/ko/code-security/reference/code-scanning/codeql/codeql-cli","title":"CodeQL 커맨드 라인 인터페이스 (CLI)"},{"href":"/ko/code-security/reference/code-scanning/codeql/codeql-cli/extractor-options","title":"추출기 옵션"}],"documentType":"article"},"body":"# 추출기 옵션\n\n추출기 옵션을 사용하여 CodeQL CLI가 분석용 데이터베이스를 빌드하는 방식을 제어합니다.\n\n<!--The CodeQL CLI man pages include a link to this article. If you rename this article,\nmake sure that you also update the MS short link: https://aka.ms/codeql-cli-docs/extractor-options.-->\n\n## 사용 가능한 추출기 옵션\n\n각 추출기는 소스 코드에서 쿼리 가능한 CodeQL 데이터베이스를 빌드하기 위한 고유한 구성 옵션 집합을 정의합니다. 특정 추출기에서 사용할 수 있는 옵션을 확인하려면 다음 명령 중 하나를 실행할 수 있습니다.\n* `codeql resolve languages --format=betterjson`\n* `codeql resolve extractor --language=LANGUAGE --format=betterjson`\n\n              `betterjson` 출력 형식은 추출기의 루트 경로와 추가 정보를 제공합니다. \n              `codeql resolve extractor --language=LANGUAGE --format=betterjson` 출력은 흔히 다음 예와 같이 형식이 지정됩니다.\n\n```json\n{\n    \"extractor_root\" : \"/home/user/codeql/java\",\n    \"extractor_options\" : {\n        \"option1\" : {\n            \"title\" : \"Java extractor option 1\",\n            \"description\" : \"An example string option for the Java extractor.\",\n            \"type\" : \"string\",\n            \"pattern\" : \"[a-z]+\"\n        },\n        \"group1\" : {\n            \"title\" : \"Java extractor group 1\",\n            \"description\" : \"An example option group for the Java extractor.\",\n            \"type\" : \"object\",\n            \"properties\" : {\n                \"option2\" : {\n                    \"title\" : \"Java extractor option 2\",\n                    \"description\" : \"An example array option for the Java extractor\",\n                    \"type\" : \"array\",\n                    \"pattern\" : \"[1-9][0-9]*\"\n                }\n            }\n        }\n    }\n}\n```\n\n추출기 옵션 이름 및 설명은 `extractor_options` 아래에 나열됩니다. 각 옵션에 대해 다음 필드를 설정합니다.\n\n* \n              `title`(필수): 옵션의 제목\n* \n              `description`(필수): 옵션에 대한 설명\n* \n              `type`(필수): 옵션의 형식입니다. 다음 중 하나를 사용할 수 있습니다.\n  * \n              `string`: 옵션에 단일 문자열 값이 있을 수 있음을 나타냅니다.\n  * \n              `array`: 옵션에 문자열 값 시퀀스가 있을 수 있음을 나타냅니다.\n  * \n              `object`: 옵션 자체가 아니라 다른 옵션 및 옵션 그룹을 포함할 수 있는 그룹화임을 나타냅니다.\n* \n              `pattern`(선택 사항): 옵션의 모든 값이 일치해야 하는 정규식 패턴입니다. 추출기는 이 정규식 패턴에서 표현할 수 없거나 표현할 수 없는 옵션 값에 추가 제약 조건을 적용할 수 있습니다. 이러한 제약 조건이 있는 경우 설명 필드 아래에 설명됩니다.\n* \n              `properties`(선택 사항): 옵션 그룹의 추출기 옵션 이름에서 해당 추출기 옵션 설명으로의 맵입니다. 이 필드는 옵션 그룹에 대해서만 존재할 수 있습니다. 예를 들면 `object` 유형의 옵션입니다.\n\n위의 예에서 추출기는 두 가지 옵션을 선언합니다.\n\n* \n              `option1`은 `string`와 일치하는 값을 갖는 `[a-z]+` 옵션입니다.\n* \n              `group1.option2`는 `array`와 일치하는 값을 갖는 `[1-9][0-9]\\*` 옵션입니다.\n\n## 추출기 옵션을 설정하기 위한 명령\n\nCodeQL CLI는 추출기를 직접 또는 간접적으로 호출하는 하위 명령의 추출기 옵션 설정을 지원합니다. 해당 명령은 다음과 같습니다.\n\n* `codeql database create`\n* `codeql database start-tracing`\n* `codeql database trace-command`\n* `codeql database index-files`\n\n이러한 하위 명령을 실행할 때 `--extractor-option` CLI 옵션을 사용하여 추출기 옵션을 설정할 수 있습니다. 다음은 그 예입니다.\n\n* `codeql database create --extractor-option java.option1=abc ...`\n* `codeql database start-tracing --extractor-option java.group1.option2=102 ...`\n\n              `--extractor-option` 에는 폼 `extractor_option_name=extractor_option_value`의 인수가 정확히 하나 필요합니다.\n* \n              `extractor_option_name`은 추출기 이름(이 예에서는 `java`)과 마침표, 추출기 옵션의 이름(이 예에서는 `option1` 또는 `group1.option2`)입니다.\n* \n              `extractor_option_value` \\는 추출기 옵션에 할당되는 값입니다. 값은 추출기 옵션의 정규식 패턴(있는 경우)과 일치해야 하며 줄 바꿈 문자를 포함해서는 안 됩니다.\n\n              `--extractor-option`을 사용하여 존재하지 않는 추출기 옵션을 할당하는 것은 오류입니다.\n\nCodeQL CLI는 동일한 호출에서 여러 `--extractor-option` 옵션을 허용합니다. \n              `string` 추출기 옵션을 여러 번 설정하면 마지막 옵션 값이 이전의 모든 옵션을 덮어씁니다. 배열 추출기 옵션을 여러 번 설정하면 모든 옵션 값이 순서대로 연결됩니다.\n\n추출기 이름 없이 추출기 옵션 이름을 지정할 수도 있습니다. 다음은 그 예입니다.\n\n* `codeql database create --extractor-option option1=abc ...`\n* `codeql database start-tracing --extractor-option group1.option2=102 ...`\n\n추출기 이름을 지정하지 않으면 지정된 이름으로 옵션을 선언하는 모든 추출기에 추출기 옵션 설정이 적용됩니다. 위의 예제에서 첫 번째 명령은 `option1` 추출기 및 옵션 `abc`가 있는 모든 추출기(예: 해당 추출기에 `java` 추출기 옵션이 있는 경우 `option1` 추출기)에 대해 추출기 옵션 `cpp`을(를) `option1`(으)로 설정합니다.\n\n## 추출기 옵션의 파일 형식\n\n파일을 통해 추출기 옵션을 설정할 수도 있습니다. \n              `--extractor-option`을 수락하는 CodeQL CLI 하위 명령은 `--extractor-options-file`도 수락합니다. 여기에는 YAML 파일(확장자 `.yaml` 또는 `.yml`) 또는 JSON 파일(확장자 `.json`) 경로에 대한 필수 인수가 있습니다. 다음은 그 예입니다.\n\n* `codeql database create --extractor-options-file options.yml ...`\n* `codeql database start-tracing --extractor-options-file options.json ...`\n\n각 옵션 파일에는 중첩된 맵의 트리 구조가 포함되어 있습니다. 루트에는 추출기 맵 키가 있으며 그 아래에는 추출기 이름에 해당하는 지도 키가 있습니다. 세 번째 수준부터 추출기 옵션 및 옵션 그룹이 있습니다.\n\nJSON 내:\n\n```json\n{\n     \"extractor\" : {\n        \"java\": {\n            \"option1\" : \"abc\",\n            \"group1\" : {\n                \"option2\" : [ 102 ]\n            }\n        }\n    }\n}\n```\n\nYAML에서:\n\n```yaml\nextractor:\n    java:\n        option1: \"abc\"\n        group1:\n            option2: [ 102 ]\n```\n\n추출기 옵션의 `string` 값은 문자열 또는 숫자여야 합니다(추가 처리 전에 문자열로 변환됨).\n\n추출기 옵션의 `array` 값은 문자열 또는 숫자의 배열이어야 합니다.\n\n옵션 그룹(형식 `object`)의 값은 중첩된 추출기 옵션 및 옵션 그룹을 포함할 수 있는 맵이어야 합니다.\n\n각 추출기 옵션 값은 추출기 옵션의 정규식 패턴(있는 경우)과 일치해야 하며 줄 바꿈 문자를 포함해서는 안 됩니다.\n\n존재하지 않는 추출기 옵션을 할당하는 것은 오류입니다. 특수한 `__allow_unknown_properties` 부울 필드를 사용하여 CodeQL CLI가 알 수 없는 추출기 옵션을 무시하도록 할 수 있습니다. 예를 들어 다음 옵션 파일은 CodeQL CLI가 모든 알 수 없는 추출기 옵션 및 `group1` 아래의 옵션 그룹을 무시하도록 요청합니다.\n\n```yaml\nextractor:\n    java:\n        option1: \"abc\"\n        group1:\n            __allow_unknown_properties: true\n            option2: [ 102 ]\n```\n\n              `--extractor-options-file`은 여러 번 지정할 수 있습니다. 추출기 옵션 할당은 다음과 같은 순서로 처리됩니다.\n\n1. \n              `--extractor-options-file`으로 지정한 모든 추출기 옵션 파일은 명령줄에 표시되는 순서대로 처리됩니다.\n1. \n              `--extractor-option`으로 지정한 모든 추출기 옵션 할당은 명령줄에 표시되는 순서대로 처리됩니다.\n\n              `--extractor-option`을 사용하여, `--extractor-options-file`을 사용하여 또는 이 둘의 몇 가지 조합을 사용하여 할당하는지에 관계없이 동일한 추출기 옵션을 여러 번 설정할 때 발생하는 작업은 동일한 규칙이 제어합니다. \n              `string` 추출기 옵션을 여러 번 설정 하면 마지막 옵션 값이 모든 이전 값을 덮어씁니다. \n              `array` 추출기 옵션을 여러 번 설정하면 모든 옵션 값이 순서대로 연결됩니다."}