Skip to main content

쿼리 참조 파일

쿼리 참조 파일을 사용하여 테스트에서 실행하려는 쿼리의 위치를 정의할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

CodeQL은(는) 다음 리포지토리 유형에 사용할 수 있습니다.

쿼리 참조 파일 알아보기

쿼리 참조 파일은 테스트할 쿼리 한 개의 위치를 정의하는 텍스트 파일입니다.

test run 하위 명령에 테스트 디렉터리에 속하지 않는 쿼리를 실행하도록 지시하려는 경우 쿼리 참조 파일을 사용합니다. 테스트로 실행하려는 쿼리를 지정하는 방법에는 두 가지가 있습니다.

  1. 쿼리 참조 파일을 사용하여 테스트할 쿼리의 위치를 지정합니다. 이는 실제 코드베이스에서 문제를 식별하기 위한 경고 및 경로 쿼리에 대한 테스트를 만들 때 유용합니다. 테스트 코드의 여러 디렉터리를 만들 수 있습니다. 각 디렉터리는 쿼리의 다양한 측면에 초점을 맞춥니다. 그런 다음 테스트 코드의 각 디렉터리에 쿼리 참조 파일을 추가하여 테스트할 쿼리를 지정합니다.
  2. 테스트 디렉터리에 직접 쿼리를 추가합니다. 이는 일반적으로 QL 라이브러리의 동작을 테스트하기 위해 쿼리를 명시적으로 작성할 때 유용합니다. 이러한 쿼리에는 라이브러리 조건자 호출이 몇 개만 포함되어 출력을 테스트할 수 있도록 select 문에 래핑하는 경우가 많습니다.

쿼리 참조 파일 정의

각 쿼리 참조 파일(.qlref)은 해당 쿼리를 찾을 위치를 정의하는 한 줄을 포함합니다. 위치는 쿼리가 포함된 CodeQL 팩의 루트를 기준으로 정의해야 합니다. 이는 일반적으로 .qlref을(를) 포함하는 CodeQL 팩, 테스트 팩의 dependencies 블록에 지정된 CodeQL 팩, 또는 CodeQL 팩의 전이적 종속성입니다.

시스템 간의 호환성을 보장하려면 모든 운영 체제의 경로에서 슬래시를 사용해야 합니다.

예시

JavaScript 경고 쿼리를 테스트하는 쿼리 참조 파일: DeadAngularJSEventListener.qlref

javascript/ql/test에 있는 CodeQL 팩의 qlpack.yml 파일(https://github.com/github/codeql/blob/main/javascript/ql/test/qlpack.yml)은 codeql/javascript-queries을(를) 종속성으로 정의합니다. 따라서 쿼리 참조 파일은 codeql/javascript-queries CodeQL 팩을 기준으로 쿼리의 위치를 정의합니다.

AngularJS/DeadAngularJSEventListener.ql

또 다른 예는 "사용자 지정 쿼리 테스트"을(를) 참조하세요.