LinterCheckAstNode - 범위 지정, 전역

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기4분
  • LinterCheckAstNode API는 Linter 검사에서 AST(추상 구문 트리) 노드 세부 정보를 가져오기 위한 메서드를 제공합니다.

    이 API는 (com.glide.instance_scan) 플러그인에 Instance Scan 포함되어 있습니다. 자세한 내용은 Instance Scan 단원을 참조하십시오.

    이 클래스의 메서드를 사용하여 Linter 검사 양식의 스크립트 필드에 코드를 추가하여 AST 노드 형식에 대한 Linter 검사를 실행합니다. 자세한 내용은 고급 linter 검사 스크립트를 참조하세요.

    스크립트에서 문제를 식별하는 Linter 검사를 생성합니다. 기록에 대해 Linter 검사가 실행되면 해당 코드에 대한 추상 구문 트리가 생성됩니다. 추상 구문 트리를 사용하여 코드의 문제를 분석할 수 있습니다.

    Instance Scan engine.rootNode 개체를 사용하는 이 API의 액세스 메서드입니다.

    LinterCheckAstNode - getNameIdentifier()

    이름 노드 유형의 문자열 값을 검색합니다. name 노드는 함수 또는 변수 이름과 같이 키워드가 아닌 단순 식별자를 나타냅니다.

    표 1. 매개변수
    이름 유형 설명
    없음
    표 2. 반환
    유형 설명
    문자열 linter 객체가 name 노드 형식인 경우 이름을 문자열로 반환합니다. 그렇지 않으면 Null입니다.

    다음 예제에서는 린터 검사에서 Findings API incrementWithNode() 메서드를 사용합니다. Linter 검사 양식의 스크립트 필드에서 이 방법을 사용합니다.

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);

    LinterCheckAstNode - getParent()

    액세스한 노드의 부모 노드 개체를 가져옵니다.

    표 3. 매개변수
    이름 유형 설명
    없음
    표 4. 반환
    유형 설명
    객체 액세스한 노드의 상위 노드 객체입니다.

    다음 예제에서는 린터 검사에서 Findings API incrementWithNode() 메서드를 사용합니다. Linter 검사 양식의 스크립트 필드에서 이 방법을 사용합니다.

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);

    LinterCheckAstNode - getTypeName()

    액세스한 노드의 형식을 가져옵니다.

    표 5. 매개변수
    이름 유형 설명
    없음
    표 6. 반환
    유형 설명
    문자열 액세스한 노드의 유형 이름입니다. 예를 들어, 소스의 함수 호출은 유형 이름이 CALL인 노드로 토큰화됩니다.

    다음 예제에서는 린터 검사에서 Findings API incrementWithNode() 메서드를 사용합니다. Linter 검사 양식의 스크립트 필드에서 이 방법을 사용합니다.

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);

    LinterCheckAstNode - visit(callbackFunction 함수)

    이 노드에서 시작하여 하위 트리의 각 노드에 액세스하고 각 노드에서 지정된 콜백 함수를 실행합니다.

    표 7. 매개변수
    이름 유형 설명
    콜백 함수 함수 이 노드의 하위 트리에 있는 각 노드에서 실행할 콜백 함수입니다. 이 콜백 함수는 노드를 방문할 노드인 매개변수로 사용합니다.
    표 8. 반환
    유형 설명
    없음

    다음 예제에서는 린터 검사에서 Findings API incrementWithNode() 메서드를 사용합니다. Linter 검사 양식의 스크립트 필드에서 이 방법을 사용합니다.

    (function(engine) {
      engine.rootNode.visit(function(node) {
        if (node.getTypeName() === "NAME" &&
            node.getNameIdentifier() === "soughtFunction" &&
            node.getParent().getTypeName() === "CALL") {
          engine.finding.incrementWithNode(node);
        } 
      });
    })(engine);