LinterCheckAstNode - 범위가 지정됨, 전역

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 4분
  • LinterCheckAstNode API는 린터 검사에서 추상 구문 트리(AST) 노드 세부 정보를 가져오기 위한 메서드를 제공합니다.

    이 API는 (com.glide.instance_scan) 플러그인에 인스턴스 스캔 포함되어 있으며 sn_instance_scan 네임스페이스에서 실행됩니다. 자세한 내용은 Instance Scan 단원을 참조하십시오.

    이 클래스의 메서드를 사용하면 Linter 검사 양식의스크립트 필드에 코드를 추가하여 AST 노드 유형에 대한 Linter 검사를 실행할 수 있습니다. 자세한 내용은 고급 린터 검사 스크립트를 참조하십시오.

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

    인스턴스 스캔 engine.rootNode 객체를 사용하여 이 API에서 메서드에 액세스합니다.

    LinterCheckAstNode - getNameIdentifier()

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

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

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

    (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() 메서드를 사용합니다. 린터 검사 양식의 스크립트 필드에서 이 방법을 사용합니다.

    (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() 메서드를 사용합니다. 린터 검사 양식의 스크립트 필드에서 이 방법을 사용합니다.

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

    LinterCheckAstNode - 방문(Function callbackFunction)

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

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

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

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