Ver código fonte

Merge branch 'cherry-pick-ee3bb443' into 'fix-savenode'

添加测试目标分析结果的检验过程



See merge request !690

chenxz 7 anos atrás
pai
commit
b2699a64d1

+ 8 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/common/acyncTask/MutationCallBack.java

@@ -8,6 +8,7 @@ import cn.iselab.mooctest.site.service.fromDev.AnalysisService;
 import cn.iselab.mooctest.site.web.data.forMongo.MutationForMongoDTO;
 import cn.iselab.mooctest.site.web.data.forMongo.NodeCatch.CaughtNodeDTO;
 import cn.iselab.mooctest.site.web.data.forMongo.TargetGraphDTO;
+import cn.iselab.mooctest.site.web.exception.HttpBadRequestException;
 import cn.iselab.mooctest.site.web.logic.CalculateSocreLogic;
 import cn.iselab.mooctest.site.web.logic.GeneralCalculateScoreLogic;
 import com.google.gson.Gson;
@@ -141,11 +142,14 @@ public class MutationCallBack implements AsyncTaskCallBack {
         Gson gson=new Gson();
         TargetGraphDTO dto=gson.fromJson(result,TargetGraphDTO.class);
         dto.setTargetId(targetId);
-        dto=targetGraphService.updateTargetGraph(dto);
-        try {
+        try{
+            dto.validate();
+            dto=targetGraphService.updateTargetGraph(dto);
             targetGraphService.saveTargetGraphJson(dto);
-        }catch (Exception e){
-            e.printStackTrace();
+        }catch (HttpBadRequestException e){
+            targetGraphService.saveFailJson(targetId);
+            LOG.error(targetId+"生成node不合法:"+e.getMessage());
+        }catch (IOException e){
             LOG.info(targetId+"生成变异元数据json文件失败");
         }
     }

+ 5 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/TargetGraphService.java

@@ -2,6 +2,8 @@ package cn.iselab.mooctest.site.service;
 
 import cn.iselab.mooctest.site.web.data.forMongo.TargetGraphDTO;
 
+import java.io.IOException;
+
 
 /**
  * @Author ROKG
@@ -17,7 +19,9 @@ public interface TargetGraphService {
 
     TargetGraphDTO updateTargetGraph(TargetGraphDTO dto);
 
-    void saveTargetGraphJson(TargetGraphDTO dto)throws Exception;
+    void saveTargetGraphJson(TargetGraphDTO dto)throws IOException;
 
     void saveTargetGraphJson(String targetGraphStr,Long id);
+
+    void saveFailJson(Long id);
 }

+ 19 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/TargetGraphServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.web.client.RestTemplate;
 
 import java.io.File;
 import java.io.FileWriter;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.List;
 import java.util.Map;
@@ -104,7 +105,24 @@ public class TargetGraphServiceImpl implements TargetGraphService{
     }
 
     @Override
-    public void saveTargetGraphJson(TargetGraphDTO dto)throws Exception{
+    public void saveFailJson(Long id){
+        try{
+            FileWriter fw = new FileWriter(DownloadConstants.SAVE_PATH + "node/" + id + "_mutation.json");
+            PrintWriter out = new PrintWriter(fw);
+            out.write("经检验,该测试目标生成的node不合法,可能存在node名称重复,node节点与edge不对应等问题!");
+            out.close();
+            FileWriter fw1 = new FileWriter(DownloadConstants.SAVE_PATH + "node/" + id + "_sc.json");
+            PrintWriter out1 = new PrintWriter(fw1);
+            out1.write("经检验,该测试目标生成的node不合法,可能存在node名称重复,node节点与edge不对应等问题!");
+            out1.close();
+            fw1.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void saveTargetGraphJson(TargetGraphDTO dto)throws IOException{
         List<Node> mutationNodes=dto.getNodes().stream().filter(node -> node.getCategory().equals(NodeTypeConstants.MUTATION)).collect(Collectors.toList());
         List<Node> scNodes=dto.getNodes().stream().filter(node -> node.getCategory().equals(NodeTypeConstants.STATEMENT_COVERAGE)).collect(Collectors.toList());