合并分支的日志
[INFO] SCM Publisher SCM provider for this project is: git
[INFO] SCM Publisher 8 source files to be analyzed
[WARNING] Shallow clone detected, no blame information will be provided. You can convert to non-shallow with 'git fetch --unshallow'.
[INFO] SCM Publisher 0/8 source files have been analyzed (done) | time=7ms
[WARNING] Missing blame information for the following files:
[WARNING] * common-framework/common-framework-tos/src/test/java/framework/tos/engine/StorageEngineServiceTest.java
[WARNING] * common-framework/common-framework-tos/src/test/java/framework/tos/repository/impl/MinioRepositoryImplTest.java
[WARNING] * common-framework/common-framework-tos/src/main/java/framework/tos/engine/impl/StorageMinioEngineHandlerInterceptor.java
[WARNING] * common-framework/common-framework-tos/src/main/java/framework/tos/engine/StorageEngineService.java
[WARNING] * common-framework/common-framework-tos/src/main/java/framework/tos/engine/impl/StorageEngineServiceImpl.java
[WARNING] * common-framework/common-framework-tos/src/main/java/framework/tos/controller/StorageController.java
[WARNING] * common-framework/common-framework-tos/src/test/java/framework/tos/controller/StorageControllerTest.java
[WARNING] * common-framework/common-framework-tos/src/test/java/framework/tos/engine/impl/StorageEngineServiceImplTest.java
[WARNING] This may lead to missing/broken features in SonarQube
测试类
@RunWith(MockitoJUnitRunner.class)
public class StorageEngineServiceImplTest {
@InjectMocks
@Spy
private StorageEngineServiceImpl service;
@Mock
private MetadataRepository metadataRepository;
@Mock
private StorageEngineFactory storageEngineFactory;
@Mock
private StorageMinioEngineHandlerInterceptor storageMinioEngineHandlerInterceptor;
@Mock
private TosProperties tosProperties;
@Captor
private ArgumentCaptor<FileMetadataInfoDTO> fileMetadataInfoDTO;
@Before
public void setUp() {
UserInfo userInfo = new UserInfo();
userInfo.setUserId("TEST");
UserHolder.setCurrentUser(userInfo);
}
@Test
public void remove() {
String meteDataJson = "{\"id\":627,\"fileKey\":\"9a5b15692ef0426c8204a7a910eff4c9\",\"fileMd5\":\"1ce7af3b474844c587be0df11cc7fbf2\",\"fileName\":\"video01.mp4\",\"fileMimeType\":\"video/mp4\",\"fileSuffix\":\"mp4\",\"fileSize\":22513474,\"storageEngine\":\"minio\",\"storageBucket\":\"video\",\"storagePath\":\"2023/08\",\"uploadTaskId\":\"b47b61ac-7868-4856-87d6-828815d9f1e8\",\"isFinished\":false,\"isPart\":true,\"partNumber\":5,\"isPreview\":false,\"isPrivate\":true,\"createUser\":\"TEST\",\"createTime\":1691064746000,\"updateUser\":\"TEST\",\"updateTime\":1691064746000}";
FileMetadataInfoVo meteData = JSONUtil.toBean(meteDataJson, FileMetadataInfoVo.class);
Mockito.when(metadataRepository.one(fileMetadataInfoDTO.capture())).thenReturn(meteData);
Mockito.when(tosProperties.getEngine()).thenReturn("minio");
Mockito.when(storageEngineFactory.getHandler("minio")).thenReturn(storageMinioEngineHandlerInterceptor);
Boolean xxx = service.remove("xxx");
Assert.assertTrue("", xxx);
}
@Test
public void removeByUser() {
Mockito.when(metadataRepository.one(fileMetadataInfoDTO.capture())).thenReturn(null);
Boolean xxx = service.remove("xxx", "TEST");
Assert.assertTrue("", xxx);
}
}
gitlib配置
.maven_verify_sonar: &maven_verify_sonar
- echo 'maven_verify_sonar'
- mvn --batch-mode verify org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar -Dsonar.qualitygate.wait=true -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.projectKey=$CI_PROJECT_NAME -Dsonar.projectName=$CI_PROJECT_NAME -Dsonar.exclusions=**/target/**,**/test/**,**/example-module/**/*.java,**/common-base-commons/**/*.java,**/common/**/*.java -Dsonar.core.codeCoveragePlugin=jacoco -Dsonar.coverage.jacoco.xmlReportPaths=${CI_PROJECT_DIR}/target/site/jacoco/jacoco.xml -Dsonar.dependencyCheck.securityHotspot=true -Dsonar.dependencyCheck.summarize=true -Dsonar.dependencyCheck.htmlReportPath=${CI_PROJECT_DIR}/public/dependency-check-report.html -Dsonar.dependencyCheck.jsonReportPath=${CI_PROJECT_DIR}/public/dependency-check-report.json
before_script:
- rm -fr $HOME/.m2/settings.xml
- mkdir -p $HOME/.m2
- echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?><settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd\"><mirrors><mirror><id>nexus</id><mirrorOf>*</mirrorOf><name>Nexus</name><url>$MAVEN_REPOSITORY_URL</url></mirror></mirrors></settings>" >> $HOME/.m2/settings.xml
stages:
- code_check
findbugs:
image: maven:3-jdk-11
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
stage: code_check
only:
refs:
- develop
- merge_requests
script:
- echo 'sonarqube_scan'
- *maven_verify_sonar
artifacts:
when: always
reports:
junit:
- common-framework/**/target/surefire-reports/TEST-*.xml
sca_check:
image:
name: java/sca:1.0
entrypoint: [""]
stage: code_check
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
- changes:
- pom.xml
- "**/pom.xml"
script:
- opensca-cli -path . -url $OPENSCA_URL -token $OPENSCA_TOKEN -out ${CI_PROJECT_DIR}/public/opensca.html
- snyk auth $SNYK_TOKEN
- snyk test ${CI_PROJECT_DIR} -maven-aggregate-project --json | snyk-to-html -o ${CI_PROJECT_DIR}/public/snyk_results.html || exit_code=$?
- mvn clean package -Dmaven.test.skip
- >
/usr/share/dependency-check/bin/dependency-check.sh --disableRetireJS --scan ${CI_PROJECT_DIR} --format JSON -format HTML --project "$CI_PROJECT_NAME" --failOnCVSS 0 --out ${CI_PROJECT_DIR}/public || exit_code=$?
- mvn clean
- *maven_verify_sonar
artifacts:
when: always
paths:
- public
现在合并分支的时候,提示上面那个异常,导致sonar覆盖率为0,合并失败
【以下回答由 GPT 生成】
不是,我的问题不是关于SonarQube中的缺失/损坏功能以及合并分支日志的。
【相关推荐】