Bladeren bron

feat: add quality conditions

claws 4 jaren geleden
bovenliggende
commit
8123a66778

+ 1 - 0
web/src/main/java/cn/seecoder/web/model/po/commit/CommitQualityPO.java

@@ -24,4 +24,5 @@ public class CommitQualityPO {
     private String checkResult;
     private Date checkTime;
     private String resultUrl;
+    private String qualityConditionsJson;
 }

+ 8 - 3
web/src/main/java/cn/seecoder/web/model/vo/commit/CommitQualityVO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 @NoArgsConstructor
@@ -13,11 +14,15 @@ public class CommitQualityVO {
     private Date checkTime;
     private String resultUrl;
     private CommitCheckResultEnum checkResult;
-    private QualityGates qualityGates;
+    private List<QualityCondition> qualityConditions;
 
     @Data
     @NoArgsConstructor
-    public static class QualityGates {
-        private boolean apiOk = true;
+    public static class QualityCondition {
+        private String metric;
+        private String operator;
+        private String value;
+        private String status;
+        private String errorThreshold;
     }
 }

+ 12 - 0
web/src/main/java/cn/seecoder/web/service/impl/project/CommitServiceImpl.java

@@ -16,7 +16,9 @@ import cn.seecoder.web.model.vo.commit.CommitVO;
 import cn.seecoder.web.model.vo.hook.SonarResultHookVO;
 import cn.seecoder.web.service.bug_list.BugListService;
 import cn.seecoder.web.service.tree.TreeNodeService;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonArray;
 import com.nju.edu.gitlab.SeecoderGitlabApi;
 import com.nju.edu.gitlab.vo.DiffVO;
 import lombok.extern.slf4j.Slf4j;
@@ -251,11 +253,13 @@ public class CommitServiceImpl implements CommitService {
             commitQualityPO.setCommitHash(commitHash);
             commitQualityPO.setCheckResult(sonarResultHookVO.getQualityGate().getStatus());
 
+            // convert time to java date
             DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
             simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
             Date date = simpleDateFormat.parse(sonarResultHookVO.getChangedAt());
             commitQualityPO.setCheckTime(date);
 
+            // convert localhost url to available url
             String url = sonarResultHookVO.getProject().getUrl();
             // http://localhost:9000/dashboard?id\u003dsonart-4194-sonar-sonar-83700f2455cef5ca81ee0561d1a5509229ee0bcb
             // to
@@ -265,6 +269,12 @@ public class CommitServiceImpl implements CommitService {
             commitQualityPO.setResultUrl(url);
 
             commitQualityPO.setSonarProjectKey(sonarResultHookVO.getProject().getKey());
+
+            // set quality conditions json
+            String conditionsArrayJson = JSONArray.toJSONString(sonarResultHookVO.getQualityGate().getConditions());
+            commitQualityPO.setQualityConditionsJson(conditionsArrayJson);
+
+            // update to database
             CommitQualityPO lastCommitQualityPO = commitQualityMapper.selectByCommitHash(commitHash);
             if (lastCommitQualityPO != null) {
                 commitQualityPO.setId(lastCommitQualityPO.getId());
@@ -291,6 +301,8 @@ public class CommitServiceImpl implements CommitService {
             commitQualityVO.setCheckResult(convertCommitCheckResult(commitQualityPO.getCheckResult()));
             commitQualityVO.setCheckTime(commitQualityPO.getCheckTime());
             commitQualityVO.setResultUrl(commitQualityPO.getResultUrl());
+            List<CommitQualityVO.QualityCondition> qualityConditions = JSONArray.parseArray(commitQualityPO.getQualityConditionsJson(), CommitQualityVO.QualityCondition.class);
+            commitQualityVO.setQualityConditions(qualityConditions);
             return commitQualityVO;
         } else {
             CommitQualityVO commitQualityVO = new CommitQualityVO();

+ 2 - 7
web/src/main/resources/sql/table_init.sql

@@ -224,11 +224,6 @@ create table if not exists devcloud.commit_quality
     sonar_project_key               varchar(127)    not null,
     check_result                    varchar(31)     not null,
     check_time                      datetime default CURRENT_TIMESTAMP not null,
-    result_url                      varchar(255)    null
---     new_reliability_rating          double          null,
---     new_security_rating             double          null,
---     new_maintainability_rating      double          null,
---     new_coverage                    double          null,
---     new_duplicated_lines_density    double          null,
---     new_security_hotspots_reviewed  double          null
+    result_url                      varchar(255)    null,
+    quality_conditions_json         varchar(1023)   null
 ) CHARSET=utf8;