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

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

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