提交 1a06d0ad authored 作者: 孙洁清's avatar 孙洁清

Merge branch 'master' of git.yfzx.zjtys.com.cn:912-system/monitor/inspect

......@@ -184,10 +184,17 @@ public class InspectController {
马晨俊运算结束
*/
System.out.println(JSON.toJSONString(inspect));
if(inspect.getRecastMethod()==1 &&(inspect.getLanguage()!=1||inspect.getLanguage()==2)){
return ResponseEntity.ok(500);
}
/*
将马晨俊的数据放入输出的表单
*/
AssessmentReport assessmentReport = new AssessmentReport();
//架构
assessmentReport.setFramework(inspect.getFramework());
//语言
assessmentReport.setLanguage(inspect.getLanguage());
//适配还是改造
assessmentReport.setType(reform.getMode());
SysScale sysScale = new SysScale();
......@@ -223,7 +230,7 @@ public class InspectController {
//jni数量
int jni = 0;
//中间件依赖数量
int dependOnNum = 0;
// int dependOnNum = 0;
HashMap<String, List<Warn>> warnDetails = inspect.getWarnDetails();
Set<String> keySet = warnDetails.keySet();
List<TechnologyReport> technologyReports = new ArrayList<>();
......@@ -240,10 +247,10 @@ public class InspectController {
technologyContent.setFile(warn.getFilePath());
technologyContent.setKeyWord(warn.getRule());
technologyContent.setPosition(warn.getLineNum().toString());
String categoryId = warn.getCategoryId();
if(!Objects.equals(categoryId, "0") &&categoryId!=null&& Objects.equals(categoryId, "1")){
dependOnNum += 1;
}
// String categoryId = warn.getCategoryId();
// if(!Objects.equals(categoryId, "0") &&categoryId!=null&& Objects.equals(categoryId, "1")){
// dependOnNum += 1;
// }
technologyContents.add(technologyContent);
}
if(Objects.equals(key, "Microsoft CSS extensions(不支持)")){
......@@ -322,7 +329,7 @@ public class InspectController {
// dependOnNum.setNum(num.get(s));
// dependOnNums.add(dependOnNum);
// }
middlewareDifficulty.setDependOnNum(dependOnNum);
middlewareDifficulty.setDependOnNum(inspect.getSupportSize());
Middleware middleware = reform.getMiddleware();
middlewareDifficulty.setWeb(middleware.getWeb());
middlewareDifficulty.setJms(middleware.getJms());
......
......@@ -39,12 +39,21 @@ public class AssessmentReport {
*/
private double difficulty;
/**
* 语言
*/
private Integer language;
/**
* 类型预算 1:适配、2:改造
*/
private Integer type;
/**
* 架构
*/
private Integer framework;
/**
* 预算金额 double
*/
......
......@@ -59,8 +59,8 @@ public class ReportVo {
/**
* 适配方式
* 1:适配重构
* 2:代码修改
* 1:修改
* 2:适配
*/
private Integer recastMethod;
......@@ -109,6 +109,8 @@ public class ReportVo {
*/
private Integer fileLine;
private Integer supportSize = 0;
/**
* 评估时间
*/
......
......@@ -6,30 +6,18 @@ package com.zjty.inspect.enums;
* @author mcj
*/
public enum Language {
/**
* java类型
*/
C("c#",8),
JAVA("java",1),
/**
* java类型
* 语言
*/
VUE("java",2),
JAVA("java",1),
VUE("js",2),
/**
* java类型
*/
CPP("cpp",2),
/**
* pyth类型
*/
PYTHON("python",3),
/**
* asp
*/
ASP("asp",4),
/**
* js
......@@ -44,7 +32,12 @@ public enum Language {
* html
*/
HTML("html",7),
UNKNOW("unknowun",9);
C("c#",8),
C("c#",9),
UNKNOW("unknowun",10);
Language(String name,Integer status){
......@@ -63,4 +56,9 @@ public enum Language {
public Integer getStatus() {
return status;
}
public static void main(String[] args) {
Language language = Language.valueOf("VUE");
System.out.println(language.name);
}
}
......@@ -53,6 +53,7 @@ public class Inspector {
private DependencyVo dependencyVo = new DependencyVo();
private ArrayList<Rule> rules = new ArrayList<>(512);
private ArrayList<Warn> warns = new ArrayList<>(64);
private ArrayList<Warn> supportWarns = new ArrayList<>(64);
/**
* 添加规则时去重使用
......@@ -146,29 +147,31 @@ public class Inspector {
* 1.解析文件
* 2/记录文件地址
* 3/统计各个规则文件后缀
*
* @return
*/
public ReportVo inspect() {
codeSize=0;
ruleSuffixFilePathMap = new HashMap<>();
ruleSuffixMap = new HashMap<>();
technologyHashMap = new HashMap<>();
warns.clear();
rules.clear();
//查询技术,构造支持与非支持技术对象
//初始化值
initData();
//查询技术,构造支持与非支持技术对象,3个对象
findExistTechnology();
//配置语言 map结构
statisticsLanguage();
//配置 config文件 结构
statisticsConfigFile();
//查询所有规则,第一遍扫描文件需要
this.ruleList = ruleDao.findAll();
//根据后缀名,收集文件进行操作
for (Rule rule : ruleList) {
if (!ruleSuffixFilePathMap.containsKey(rule.getSuffix())) {
ruleSuffixFilePathMap.put(rule.getSuffix(), new ArrayList<>());
}
if(!ruleMap.containsKey(rule.getTarget()+":"+rule.getSuffix())){
ruleMap.put(rule.getTarget()+":"+rule.getSuffix(),rule);
if (!ruleMap.containsKey(rule.getTarget() + ":" + rule.getSuffix())) {
ruleMap.put(rule.getTarget() + ":" + rule.getSuffix(), rule);
}
}
//查询所有技术,第一遍扫描文件需要
List<Technology> technologies = technologyDao.findAll();
for (Technology technology : technologies) {
technologyHashMap.put(technology.getId(), technology);
......@@ -204,6 +207,7 @@ public class Inspector {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
//扫描jar文件时
if (file.getFileName().toString().endsWith(".jar")) {
//新建一个pom对象
ProjectPom projectPom = new ProjectPom();
......@@ -241,11 +245,11 @@ public class Inspector {
}
dependencyVo.add(projectPom);
}
fileNum+=1;
fileNum += 1;
try {
List<String> allLines = Files.readAllLines(file);
fileLine+=allLines.size();
}catch (MalformedInputException e){
fileLine += allLines.size();
} catch (MalformedInputException e) {
return FileVisitResult.CONTINUE;
} catch (IOException e) {
e.printStackTrace();
......@@ -294,6 +298,15 @@ public class Inspector {
return analysis();
}
private void initData() {
codeSize = 0;
ruleSuffixFilePathMap = new HashMap<>();
ruleSuffixMap = new HashMap<>();
technologyHashMap = new HashMap<>();
warns.clear();
rules.clear();
}
/**
* 解析数据
*
......@@ -357,11 +370,14 @@ public class Inspector {
if (path1.toAbsolutePath().toString().endsWith("jar") || path1.toAbsolutePath().toString().endsWith("class")) {
continue;
}
if(path1.getFileName().toString().equals("js")){
System.out.println("d");
}
valiWarn(rules, path1, path1.getFileName().toString(), 0);
//将文件的每一行都与规则匹配
List<String> strings = Files.readAllLines(path1);
for (int i = 0; i < strings.size(); i++) {
valiWarn(rules, path1, strings.get(i), i + 1);
int i1 = valiWarn(rules, path1, strings.get(i), i + 1);
}
} catch (IOException e) {
log.error("解析{}出错,异常信息为{}", path1.toAbsolutePath().toString(), e.getMessage());
......@@ -387,18 +403,23 @@ public class Inspector {
report.setGitAddress(inspectParameter.getGitAddress());
//填充适配技术
report.setTechnologies(allById);
//填充依赖
report.setDependencyVo(dependencyVo);
//数据转换
HashMap<String, List<Warn>> warnMap = getWarnMap();
ruleDao.saveAll(rules);
report.setWarnDetails(warnMap);
fileLine=0;
fileNum=0;
log.info("评估报告关键技术,{}", warnMap);
fileLine = 0;
fileNum = 0;
return report;
}
/**
* 比对源文件数量
*/
private void setReportLanguageAndFrame() {
String most = null;
int mostStatus = 0;
......@@ -406,8 +427,8 @@ public class Inspector {
//统计文件最多的
for (Map.Entry<String, Counter> entry : languageMatchMap.entrySet()) {
if (entry.getValue().getNumber() > maxnum) {
most = suffixLanguageMapping.get(entry.getKey()).name();
Language language = Language.valueOf(most);
Language language = suffixLanguageMapping.get(entry.getKey());
most = language.name();
mostStatus = language.getStatus();
maxnum = entry.getValue().getNumber();
}
......@@ -459,7 +480,7 @@ public class Inspector {
}
ArrayList<String> keys = new ArrayList<>();
for (String s : ruleSuffixFilePathMap.keySet()) {
if(!ruleSuffixMap.containsKey(s)){
if (!ruleSuffixMap.containsKey(s)) {
keys.add(s);
}
}
......@@ -484,34 +505,43 @@ public class Inspector {
}
}
/**
* 查询三个默认依赖
*/
private void findExistTechnology() {
techJavaSupport = technologyDao.findAllByTechnologyNameEquals("国产化依赖(支持)");
techNotCnSupport = technologyDao.findAllByTechnologyNameEquals("非国产化依赖(不支持)");
techUnKnowSupport = technologyDao.findAllByTechnologyNameEquals("未知依赖(未知)");
}
/**
* 数据转换
*
* @return map key=技术名称 value=匹配点
*/
private HashMap<String, List<Warn>> getWarnMap() {
List<Technology> technologies = technologyDao.findAll();
HashMap<String, Technology> techMap = new HashMap<>();
for (Technology technology : technologies) {
if(!techMap.containsKey(technology.getId())){
techMap.put(technology.getId(),technology);
if (!techMap.containsKey(technology.getId())) {
techMap.put(technology.getId(), technology);
}
}
HashMap<String, List<Warn>> warnMap = new HashMap<>();
warns.addAll(supportWarns);
for (Warn warn : warns) {
if(!warnMap.containsKey(warn.getTechnologyName())){
if (!warnMap.containsKey(warn.getTechnologyName())) {
ArrayList<Warn> warns1 = new ArrayList<>();
warns1.add(warn);
warnMap.put(techMap.get(warn.getTechnologyId()).getTechnologyName(), warns1);
}else{
} else {
warnMap.get(warn.getTechnologyName()).add(warn);
}
}
for (Technology technology : technologies) {
if(!warnMap.containsKey(technology.getTechnologyName())){
if (!warnMap.containsKey(technology.getTechnologyName())) {
ArrayList<Warn> warns1 = new ArrayList<>();
warnMap.put(technology.getTechnologyName(), warns1);
}
......@@ -590,21 +620,24 @@ public class Inspector {
Technology technology = technologyHashMap.get(rule.getTechnologyId());
warn.setTechnologyName(technology.getTechnologyName());
warn.setCategoryId(technology.getCategory_id());
if (technologyHashMap.get(rule.getTechnologyId()).getSupport() == 2) {
if (technologyHashMap.get(rule.getTechnologyId()).getSupport() != 1) {
warns.add(warn);
//设置a=0代表当前依赖有问题
supportStatus = 2;
} else if (technologyHashMap.get(rule.getTechnologyId()).getSupport() == 3) {
warns.add(warn);
supportStatus = 3;
} else if (technologyHashMap.get(rule.getTechnologyId()).getSupport() == 1) {
warns.add(warn);
supportStatus = technology.getSupport();
} else{
if(supportWarns.size()!=10){
supportWarns.add(warn);
}
Integer size = report.getSupportSize();
Integer integer = size+1;
report.setSupportSize(integer);
supportStatus = 1;
}
}
}
return supportStatus;
}
public class Counter {
private int i = 0;
......
......@@ -53,7 +53,7 @@ public class InspectServiceImpl implements InspectService {
suffixLanguageMapping.put("cs", Language.C);
suffixLanguageMapping.put("resx", Language.C);
suffixLanguageMapping.put("vue", Language.VUE);
suffixLanguageMapping.put("cpp", Language.CPP);
suffixLanguageMapping.put("cpp", Language.C);
suffixLanguageMapping.put("py", Language.PYTHON);
suffixLanguageMapping.put("jsp", Language.JAVA);
suffixLanguageMapping.put("go", Language.GO);
......
......@@ -414,6 +414,7 @@ public class WorkLoadUtil {
report.getWorkload().setDes(workloadDes);
double multipleHardrage = totalWorkload*r/f;
report.getDifficultyAssessment().setDes("本系统通过源代码评估,及用户额外信息提供,认为综合难度系数:"+Double.valueOf(nf.format(multipleHardrage)));
report.setDifficulty(Double.valueOf(nf.format(multipleHardrage)));
/**
* 人工单价、基础工作量(人月)、难度系数、额外申请(万元)、预算费用 的计算值
*/
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论