2017년 12월 23일 토요일

[STAN] STAN - Structure Analysis for Java > Tasks > Analyzing Code > Specifying Class Filter Patterns

Specifying Class Filter Patterns

Class filters는 분석을 형성하는 라이브러리들로부터 클래스의 부분집합들을 조정게 해준다. 두가지 종류의 필터가 있다.
  • Inclusions 특정 클래스들이 분석되게 하는 규칙을 명세하는 Ant-style 패턴들의 부분집합으로 주어질 수 있다. 만약 inclusions이 정의되지 않았다면 기본 패턴이 적용된
  • Exclusions 틀정 클래스들이 무시되도록 하는 규칙을 명세하는 Ant-style 패턴의 집합이 주어질 것이다.
만약 클래스가 적어도 하나의 inclusion 패턴에 매칭되고 어떤 exclusion 패턴에 매칭되지 않는다면 클래스는 분석의 부분이 된다.
패턴은 패스 구분자로 점'.' 대신에 슬래시'/'를 사용한다. 다음의 와일드카드들이 사용가능하다:

  1. ? 는 하나의 캐릭터와 매칭된다(드물게 사용된다)
  2. * 는 '/'를 포함하지 않는 연속된 캐릭터와 매칭된다.
  3. ** 는 어떤 캐릭터들과도 매칭된다.
패턴을 쉽게 사용하기 위해서는 몇몇 standard pattern 타입들과 일치시키자:

  1. "/*"으로 끝나고 어떤 와일드카드를 포함하지 않는다면 하나의 패키지와 매칭된다. 예를 들어 com/foo/bar/* 는 com.foo.bar 패키지의 모든 클래스들과 매칭된다.
  2. "/**"으로 끝나고 어떤 와일드카드를 포함하지 않는다면 패키지 트리와 매칭된다. 예를 들어, com/foo/bar/**는 com.foo.bar 패키지 트리로부터의 모든 클래스들과 매칭된다.  com.foo.bar.baz 등등.
  3. 어떤 와일드 카드도 없는 패턴은 하나의 클래스와 매칭된다(inner class를 포함하여). 예를 들어 com/foo/bar/Baz는 com.foo.bar.Baz와 com.foo.bar.Baz$1과 같은 중첩 클래스와 매칭된다.
위의 표준 타입의 패턴들은 만약 Structure Explorer로부터 인공적으로 제외되지 않는다면 자동으로 분석에 적용된다. 우리는 complex patters으로서 표준 타입과 매칭되지 않는 패턴들을 참조한다. complex patterns의 예는 다음과 같다.
Patterns of the above standard types are automatically applied to the analysis if you exclude artifacts from the Structure Explorer. We refer to patterns that do not match the standard types as complex patterns. Examples for complex patterns are:
  • **/test/** 는 "test" 세그먼트를 포함하는 패키지명의 모든 클래스들과 매칭된다. 
  • **/Test* 는 "Test"로 시작하는 모든 package 내의  클래스들과 매칭된다.
새로운 분석을 생성할 때, 기본 inclusion 패턴은 라이브러리와 기본 exclusion 패턴으로부터 모든 클래스들과 매칭한다.(이 패턴은 inclusion pattern 리스트에는 표시되지 않는다)

댓글 없음: