2014-10-28 3 views
1

SonarQube 버전 :SonarQube 4.5 용 플러그인에 사용자 정의 규칙을 등록하는 방법은 무엇입니까?

4.5 나는 sonar-xoo-plugin에 따라 자바 프로젝트를 만들었습니다. 그런 다음 BaseTreeVisitor을 상속하는 간단한 규칙을 추가했으며 은 항상visitMethod(MethodTree)에 제기했습니다. 나는 클래스에 @Rule(key = "x1")이라는 주석을 달고 저장소에 새 규칙을 만들 때 클래스 MyRulesDefinition에서 동일한 키를 사용했습니다.

프로젝트를 빌드하고 jar 파일을 plugins 폴더에 넣고 sonar 서버를 시작했습니다. 플러그인이로드되었고 규칙이 존재했습니다. 선택한 품질 프로필에 대해 활성화하고 분석을 실행했지만 규칙에서 문제가 발견되지 않았습니다.

내가 뭘 잘못하고 있니? MyRulesDefinition에있는 규칙 템플리트는 규칙의 논리에 어떻게 맵핑됩니까?

최신 API를 사용하여 SonarQube 플러그인에 대한 다른 예가 있습니까?

답변

3

최신 API를 사용하는 SonarQube 플러그인에 대한 다른 예가 있습니까?

아니요, 오늘 정확히 똑같은 문제에 직면하여 아무 것도 찾을 수 없습니다. 그러나 여기에 솔루션입니다 :

  1. 구현하는 클래스를 만듭니다 RulesDefinition -> 누구의 유일한 목적은 사용자 정의 규칙은 당신이 명시 적으로 프로그래밍 방식 (정의를 제공 한 경우 SonarQube의 UI에 표시하거나 할 수있는 ServerExtension입니다 XML 파일 또는 주석을 통해). 이 확장은 서버 시작시로드됩니다.
  2. BatchExtensionJavaFileScannersFactory을 구현하는 클래스를 생성하십시오.> 그 목적은 규칙 인스턴스를 반환하여 배치 분석 중에 모든 사용자 정의 Java 규칙을 사용할 수있게 만드는 것입니다. 이 확장은 분석 중에로드됩니다.
  3. 위의 1과 2 지점에서 생성 된 확장을 반환하는 SonarPlugin을 확장하는 클래스를 만듭니다.

맞춤 규칙은 UI 및 분석 중에 모두 사용할 수 있습니다. 1.하지 않으면 활성화/구성 할 수 없습니다. 당신이 2를 잊어 버린 경우 그것은 RulesRepository와 약간의 차이입니다

, 그들은 구성/activable 수 있지만 실행되지 않습니다 (오류가 어느 쪽도 제기되지 않습니다) : 당신의 CustomRulesRepositoryRulesRepository 직접 BatchExtension 및 JavaFilesScanner을 구현할 수있는 확장.

+0

대단히 감사합니다! – nrainer

+0

당신을 환영합니다! – Kraal

0

Java Custom Rules example plugin을 살펴볼 수 있습니다. 이것은 당신에게 필요한 모든 대답을 제공해야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는이 예를 안다. 그러나, 내가 사용하지 않는 클래스를 더 이상 존재하지 않거나 더 이상 사용하지 않는 것으로 착각하지 않는다면. ''RulesDefinition'' 클래스는''RuleRepository''를 대체합니다, 그렇죠? – nrainer

+0

알림을 보내 주셔서 감사 드리며 곧이 프로젝트를 업데이트 할 예정입니다. –

관련 문제