이 Sonarsource 프로젝트는 개발자가 깨끗한 코드를 생산할 수 있도록 Java 프로젝트를위한 코드 분석기입니다. Java 기능 분석에 대한 정보는 여기에서 확인할 수 있습니다.
피드백을 제공하려면 (기능 요청, 버그보고 등) Sonar Community Forum을 사용하십시오. 언어 (Java!), 플러그인 버전 및 Sonarqube 버전을 지정하는 것을 잊지 마십시오.
플러그인을 사용하는 방법 (그리고 문서가 도움이되지 않음)에 대한 질문이 있으면 커뮤니티 포럼을 사용하는 것이 좋습니다.
새로운 기능을 요청하려면 Sonarqube Community Forum에서 새 스레드를 작성하십시오. 직접 구현하고 커뮤니티에 다시 제출할 계획이더라도 먼저 새로운 스레드를 시작하여 사용할 수 있는지 확인하십시오.
기부금을 제출하려면이 저장소에 대한 풀 요청을 작성하십시오. 코드 스타일을 따르고 모든 테스트가 통과되는지 확인하십시오 (모든 수표는 녹색이어야합니다).
규칙에 대한 아이디어가 있지만 모든 사람이 필요로하는지 확실하지 않은 경우 귀하 만 사용할 수있는 사용자 정의 규칙을 구현할 수 있습니다. 도움을주기 위해서는 먼저 규칙을 처음부터 구현하기 전에 사용자 정의 규칙 101 튜토리얼을 먼저 따르는 것이 좋습니다.
이 프로젝트에서 풀 타임으로 일하고 싶습니까? 우리는 고용 중입니다! https://www.sonarsource.com/hiring을 확인하십시오
테스트를 현지에서 실행하려면이 지침을 따릅니다.
프로젝트를 구축하려면 Java 22 필요하고 Java 17 통합 테스트 (ITS)를 실행합니다.
Java 17 Java 22 필요한 java-checks-test-sources 제외한 모든 모듈을 구축하고 테스트하는 데 사용될 수 있습니다.Java 22 SQ 비 호환성으로 인해 Java 17 필요한 its 를 제외하고 모든 모듈을 제외하고 모든 모듈을 구축하고 테스트하는 데 사용될 수 있습니다.플러그인을 빌드하고 단위 테스트를 실행하려면 프로젝트의 루트 디렉토리 에서이 명령을 실행하십시오.
mvn clean install
IDE 내에서 단위 테스트를 실행하면 프로젝트가 Maven과 함께 구축되는 방식으로 인해 일부 문제에서 발생할 수 있습니다. 다음과 같은 것을 본다면 :
java.lang.SecurityException: class ... signer information does not match signer information of other classes in the same package
'JDT'모듈의 Maven 특성을 제거하십시오.
통합 테스트를 실행하려면 아래 표시된 것과 같은 속성 파일을 작성하고 ORCHESTRATOR_CONFIG_URL 이라는 환경 변수에서 URL을 위치로 설정해야합니다.
# version of SonarQube Server
sonar.runtimeVersion=LATEST_RELEASE
orchestrator.updateCenterUrl=http://update.sonarsource.org/update-center-dev.properties
# The location of the Maven local repository is not automatically guessed. It can also be set with the env variable MAVEN_LOCAL_REPOSITORY.
maven.localRepository=/home/myName/.m2/repository
예를 들어 ORCHESTRATOR_CONFIG_URL 변수가 다음과 같이 설정됩니다.
export ORCHESTRATOR_CONFIG_URL=file:///home/user/workspace/orchestrator.properties
ITS를 실행하기 전에 Maven_home 환경 변수가 설정되어 있는지 확인하십시오.
"Sanity Test"는 분석 결과를 고려하지 않고 모든 테스트 소스 파일에 대해 모든 검사를 실행하는 테스트입니다. 테스트 소스의 파일에서 규칙이 충돌하지 않는지 확인합니다. 기본적 으로이 테스트는 빌드에서 제외됩니다. 그것을 시작하려면 :
mvn clean install -P sanity
"플러그인 테스트"는 메트릭 계산, 커버리지 등과 같은 플러그인 기능을 검증하는 통합 테스트 제품군입니다.
mvn clean install -Pit-plugin -DcommunityEditionTestsOnly=true
내부 기고자의 참고 사항 : Sonarqube Enterprise Edition에 의존하는 테스트를 실행하려면 사용하십시오.
mvn clean install -Pit-plugin
"판결 테스트"는 대형 코드 기반의 분석을 시작하고 플러그인에서 작성된 문제를 저장 한 다음 해당 결과를 예상 문제 세트 (JSON 파일로 저장)와 비교하는 통합 테스트 제품군입니다.
테스트를 실행하려면 먼저 하위 모듈이 체크 아웃되어 있는지 확인하십시오.
git submodule update --init --recursive
그런 다음 JAVA_HOME 환경 변수가 판결 테스트 실행을 위해 설정되어 있으며 로컬 JDK 17 설치를 가리 킵니다. 그렇게하지 않으면 예상 결과와 불일치가 발생합니다.
its/ruling 폴더에서 판결 테스트를 시작합니다.
mvn clean install -Pit-ruling -DcommunityEditionTestsOnly=true
# Alternatively
JAVA_HOME=/my/local/java17/jdk/ mvn clean install -Pit-ruling -DcommunityEditionTestsOnly=true
내부 기고자의 참고 사항 : Sonarqube Enterprise Edition에 의존하는 테스트를 실행하려면 사용하십시오.
mvn clean install -Pit-ruling
이 테스트를 통해 각 규칙에 의해 생성 된 문제를 검사하고 예상되는 문제를 확인할 수 있습니다. 구현 된 규칙은 우리가 판결 코드 기반으로 사용하는 여러 프로젝트에서 문제를 제기 할 가능성이 높습니다.
새로 구현 된 규칙의 경우, 예상 결과 (새 규칙에 대한 값이없는)와 새로운 결과의 차이로 인해 첫 번째 빌드가 실패 할 수 있음을 의미합니다. 다음 폴더에서 규칙의 이름을 따서 명명 된 파일 ( squid-SXXXX.json )을 검색하여 이러한 새로운 문제를 검사 할 수 있습니다.
/path/to/project/sonar-java/its/ruling/target/actual/...
수정 된 기존 규칙의 경우 "실제"(새로운 분석에서)와 예상 결과 사이의 차이가 예상 될 수 있습니다. 표시된 변경 사항을주의 깊게 검토하고 그에 따라 예상 리소스를 업데이트하십시오.
모든 json 파일에는 파일별로 인덱싱 된 줄 목록이 포함되어 있으며 특정 규칙에 의해 제기 된 문제가 어디에 있는지 설명합니다. 모든 것이 당신에게 잘 어울리는 경우, 당신은 다음에있는 실제 문제로 파일을 복사 할 수 있습니다.
its/ruling/target/actual/
예상되는 문제가있는 디렉토리로
its/ruling/src/test/resources/
예를 들어 명령 사용 :
cp its/ruling/target/actual/* its/ruling/src/test/resources/
Autoscan 모듈의 테스트는 Java 분석기가 바이트 코드 유무에 관계없이 찾을 수있는 문제 간의 차이를 감지하도록 설계되었습니다. 여기서 목표는 잠재적 인 FPS를 발견하고 수정하고 Sonarcloud의 자동 분석에 나타날 것으로 예상되는 FN을 확인하는 것입니다.
이 테스트를 실행하면 2 단계로 분류 될 수 있습니다.
java-checks-tests-sources 모듈이 컴파일되었는지 확인하십시오 (예 : java-checks-tests-sources/target/ .class 파일이 최신 임계).
의심 할 여지없이 java-checks-tests-sources 모듈로 가서 실행하십시오.
# Use java 22!
mvn clean compile 테스트를 실행하려면 its/autoscan 폴더로 이동하여 실행하십시오.
# cd its/autoscan
# use Java 17!
mvn clean package --batch-mode --errors --show-version
--activate-profiles it-autoscan
-Dsonar.runtimeVersion=LATEST_RELEASE 시험 실행 중에 생성 된 아티팩트는 its/autoscan/target/actual 에서 찾을 수 있습니다. Autoscan-diff-by-Rules에서 생성 된 결과를 비교할 것입니다.
자세한 정보는 각각의 각 폴더를 비교하여 바이트 코드와 바이트 코드없이 발견 된 결과의 차이점을 비교할 수 있습니다.
발견 된 결과에 따라 근거 진실을 업데이트해야 할 수도 있습니다. 예상 결과는 SRC/Test/Resources에 나열되어 있습니다.
테스트를 실행할 때 -Dmaven.binary=mvnDebug 추가하여 디버깅 할 수 있습니다. 이로 인해 분석기 JVM이 계속되기 전에 디버거가 부착 될 때까지 기다릴 수 있습니다.
Copyright 2012-2024 Sonarsource.
2024 년 11 월 29 일 이후에 출시 된 Sonarqube 분석기는 이전 버전에 대한 패치 수정을 포함하여 SONAR 소스를 사용할 수있는 라이센스 버전 1 (SSALV1)에 게시됩니다.
각 파일에 적용 가능한 라이센스를 지정하는 세부 사항은 개별 파일을 참조하십시오. SSALV1에 따른 파일은 헤더에 표시됩니다.