이 Sonarsource 프로젝트는 Sonarqube 플랫폼의 확장으로 사용되는 PHP 언어를위한 정적 코드 분석기입니다. 버그, 취약점 및 코드 냄새를 찾아서 수정하여 안정적이고 쉽게 지원되는 깨끗한 코드를 생성 할 수 있습니다.
피드백을 제공하려면 (기능 요청, 버그보고 등) Sonarsource 커뮤니티 포럼을 사용하십시오. 언어 (PHP!), 플러그인 버전 및 Sonarqube 버전을 지정하는 것을 잊지 마십시오.
플러그인을 사용하는 방법 (그리고 문서가 도움이되지 않음)에 대한 질문이 있으면 커뮤니티 포럼을 사용하는 것이 좋습니다.
새로운 기능을 요청하려면 Sonarsource Community Forum에서 새 스레드를 작성하십시오. 직접 구현하고 커뮤니티에 다시 제출할 계획이더라도 먼저 새 스레드를 시작하여 후속 조치를 취할 수 있는지 확인하십시오.
기부금을 제출하려면이 저장소에 대한 풀 요청을 작성하십시오. 코드 스타일을 따르고 모든 테스트가 통과되는지 확인하십시오.
규칙에 대한 아이디어가 있지만 모든 사람이 필요로하는지 확실하지 않은 경우 귀하 만 사용할 수있는 사용자 정의 규칙을 구현할 수 있습니다.
CheckContext API 인터페이스에 추가 된 추가 newIssue endpoint가 추가되었습니다PHPCustomRulesDefinition 제거되었고, 버전 2.13 (2018 년 3 월) 이후 더 이상 사용되지 않았습니다.ParameterTree#type() 더 이상 사용되지 않습니다. 대신 ParameterTree#declaredType() 사용하십시오.ReturnTypeClauseTree#type() 더 이상 사용되지 않습니다. ReturnTypeClauseTree#declaredType() 대신 사용하십시오.ClassPropertyDeclarationTree#typeAnnotation() 더 이상 사용되지 않습니다. ClassPropertyDeclarationTree#declaredType() 대신 사용하십시오.CatchBlockTree#variable() 이제 NULL 반환 할 수 있습니다.FunctionCallTree#arguments() 더 이상 사용되지 않습니다. 대신 FunctionCallTree#callArguments() 사용하십시오.AnonymousClassTree#arguments() 더 이상 사용되지 않습니다. 대신 AnonymousClassTree#callArguments() 사용하십시오.CallArgumentTree . 이 나무는 표현을 지금 논쟁으로 전달했습니다.ThrowExpressionTree .MatchExpressionTree .ParameterTree 에는 이제 visibility 방법이 있습니다.테스트를 현지에서 실행하려면이 지침을 따릅니다.
플러그인을 빌드하고 단위 테스트를 실행하려면 프로젝트의 루트 디렉토리 에서이 명령을 실행하십시오.
./gradlew build 통합 테스트를 실행하려면 아래 표시된 것과 같은 속성 파일을 작성하고 ORCHESTRATOR_CONFIG_URL 이라는 환경 변수로 위치를 설정해야합니다.
# version of SonarQube server
sonar.runtimeVersion =9.9통합 테스트를 실행하기 전에 하위 모듈을 체크 아웃해야합니다.
git submodule update --init"플러그인 테스트"는 메트릭 계산, 적용 범위 등과 같은 플러그인 기능을 검증하는 추가 통합 테스트입니다.
./gradlew its:plugin:integrationTest"판결 테스트"는 대형 코드 기반의 분석을 시작하고 플러그인에서 보고서 파일에서 생성 된 문제를 저장 한 다음 해당 결과를 예상되는 문제 (JSON 파일로 저장)와 비교하는 특수 통합 테스트입니다. 판결 시험을 시작하려면 :
./gradlew its:ruling:integrationTest이 테스트를 통해 각 규칙에 의해 생성 된 문제를 검사하고 예상되는 문제를 확인할 수 있습니다. 분석이 끝날 때 로그에 언급 된 Sonarqube 로컬 URL을 확인하여 새로운/손실 문제를 검사 할 수 있습니다. 모든 것이 당신에게 좋아 보인다면, 당신은있는 실제 문제로 파일을 복사 할 수 있습니다.
sonar-php/its/ruling/target/actual/
예상 문제가있는 디렉토리로
sonar-php/its/ruling/src/test/resources/expected/
모든 규칙 설명을 업데이트하려면 :
./gradlew ruleApiUpdateRSPEC에서 규칙 SXXXX의 정적 파일을 가져 오려면 :
./gradlew ruleApiGenerateRule -Prule=SXXXX 특정 RSPEC 브랜치 (기본적으로 master )에 대해 동일합니다.
./gradlew ruleApiGenerateRule -Prule=SXXXX -Pbranch=my-branchCopyright 2010-2024 Sonarsource.
2024 년 11 월 29 일 이후에 출시 된 Sonarqube 분석기는 이전 버전에 대한 패치 수정을 포함하여 SONAR 소스를 사용할 수있는 라이센스 버전 1 (SSALV1)에 게시됩니다.
각 파일에 적용 가능한 라이센스를 지정하는 세부 사항은 개별 파일을 참조하십시오. SSALV1에 따른 파일은 헤더에 표시됩니다.