Compare commits

...

4 Commits

  1. 14
      src/main/java/com/keyware/composeanalysis/service/impl/AnalysisTaskServiceImpl.java
  2. 4
      src/main/java/com/keyware/composeanalysis/task/CodeBlockAnalysisTask.java
  3. 2
      src/main/java/com/keyware/composeanalysis/task/LineAnalysisTask.java
  4. 7
      src/main/java/com/keyware/composeanalysis/task/PorjectAnalysisTask.java
  5. 8
      src/main/resources/application.yaml

@ -2,6 +2,7 @@ package com.keyware.composeanalysis.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.keyware.common.constant.RedisConst;
import com.keyware.common.constant.enums.AnalysisStatusEnum;
@ -69,8 +70,11 @@ public class AnalysisTaskServiceImpl extends ServiceImpl<AnalyzeTaskMapper, Anal
retryGetDecompressionFlag(analysisTask);
//开始分析前,将成分分析的状态为 进行中
analysisTask.setComposeFlag(AnalysisStatusEnum.ANALYSISING.getCode());
this.updateById(analysisTask);
LambdaUpdateWrapper<AnalysisTask> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(AnalysisTask::getId, analysisTask.getId())
.set(AnalysisTask::getComposeFlag, AnalysisStatusEnum.ANALYSISING.getCode());
this.update(null,updateWrapper);
MongoTemplate mongoTemplate = new MongoTemplate(mongoClient, MongoDBConst.DB_NAME_PREFIX + analysisTask.getId());
AnalysisLogUtil.insert(mongoTemplate, "【成分分析】开始:" + analysisTask.getFileName());
@ -85,8 +89,10 @@ public class AnalysisTaskServiceImpl extends ServiceImpl<AnalyzeTaskMapper, Anal
checkProjectIfOpen(mongoTemplate,analysisTask);
//修改成分分析状态为完成
analysisTask.setComposeFlag(AnalysisStatusEnum.ANALYSIS_DONE.getCode());
this.updateById(analysisTask);
updateWrapper.eq(AnalysisTask::getId, analysisTask.getId())
.set(AnalysisTask::getComposeFlag, AnalysisStatusEnum.ANALYSIS_DONE.getCode())
.set(AnalysisTask::getOpenType, analysisTask.getOpenType());
this.update(null,updateWrapper);
//插入分析日志
AnalysisLogUtil.insert(mongoTemplate,"【成分分析】已完成,耗时:"+ DateUtil.between(analysisTask.getAnalysisStartTime(),DateUtil.date(), DateUnit.SECOND) +"秒");

@ -190,8 +190,10 @@ public class CodeBlockAnalysisTask extends IAnalysisTask {
matchCodeBlockLineCount += traitsFeatureMd5AndFeatureLineNumMap.get(matchFeatureMd5);
}
//特征行总数
int totalFeatureLineCount = traitsFeatureMd5AndFeatureLineNumMap.values().stream().mapToInt(Integer::intValue).sum();
//计算文件的总体特征相似度
BigDecimal featureSimilarity = new BigDecimal(matchCodeBlockLineCount).divide(new BigDecimal(analysisFile.getCodeRowNum()), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2);
BigDecimal featureSimilarity = new BigDecimal(matchCodeBlockLineCount).divide(new BigDecimal(totalFeatureLineCount), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2);
//计算文件的总体开源率
BigDecimal openRate = new BigDecimal(matchedLineRowsNum.size()).divide(new BigDecimal(analysisFile.getCodeRowNum()), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2);

@ -1,6 +1,5 @@
package com.keyware.composeanalysis.task;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Pair;
@ -142,7 +141,6 @@ public class LineAnalysisTask extends IAnalysisTask {
return;
}
//保存所有匹配的行数信息,方便统计总的匹配行数
Set<String> matchedFeatureMd5 = new HashSet<>();

@ -2,6 +2,7 @@ package com.keyware.composeanalysis.task;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.FileUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.common.collect.Sets;
import com.keyware.common.constant.enums.AnalysisStatusEnum;
import com.keyware.composeanalysis.constant.FixedValue;
@ -85,8 +86,10 @@ public class PorjectAnalysisTask {
} catch (Exception e) {
AnalysisLogUtil.insert(mongoTemplate, "成分分析失败:" + e.getStackTrace());
log.error("项目级分析失败,项目名称:" + analysisTask.getFileName(), e);
analysisTask.setAnalysisStatus(AnalysisStatusEnum.FAIL_ANALYSIS.getCode());
analysisService.updateById(analysisTask);
LambdaUpdateWrapper<AnalysisTask> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(AnalysisTask::getId, analysisTask.getId())
.set(AnalysisTask::getAnalysisStatus, AnalysisStatusEnum.FAIL_ANALYSIS.getCode());
analysisService.update(null,updateWrapper);
}
}

@ -4,11 +4,11 @@ spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: 4ce70f33-8b88-4931-a88c-2b68e7259bd7
server-addr: 172.16.36.7:8848
namespace: 85e3c56e-90d3-4192-9913-4bdfb16b3db1
config:
server-addr: 127.0.0.1:8848
namespace: 4ce70f33-8b88-4931-a88c-2b68e7259bd7
server-addr: 172.16.36.7:8848
namespace: 85e3c56e-90d3-4192-9913-4bdfb16b3db1
file-extension: yaml
config:
import: nacos:compose-analysis-dev.yaml

Loading…
Cancel
Save