提交 fa64da32 authored 作者: 马晨俊's avatar 马晨俊

git update 规则增删改查

上级 779cc040
...@@ -2,6 +2,7 @@ package com.zjty.inspect; ...@@ -2,6 +2,7 @@ package com.zjty.inspect;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication @SpringBootApplication
public class InspectApplication { public class InspectApplication {
......
package com.zjty.inspect.controller; package com.zjty.inspect.controller;
import com.zjty.inspect.entity.InspectParameter; import com.zjty.inspect.entity.InspectParameter;
import com.zjty.inspect.entity.Report;
import com.zjty.inspect.service.InspectService; import com.zjty.inspect.service.InspectService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 评估接口
* @author mcj * @author mcj
*/ */
@RestController @RestController
...@@ -16,15 +17,25 @@ public class InspectController { ...@@ -16,15 +17,25 @@ public class InspectController {
@Autowired @Autowired
private InspectService inspectService; private InspectService inspectService;
/**
* 上传代码进行评估
* @param path
* @return
*/
@GetMapping("/path") @GetMapping("/path")
public ResponseEntity inspect(@RequestBody InspectParameter path){ public ResponseEntity inspect(@RequestBody InspectParameter path, MultipartFile file){
//下载代码 //得到压缩包,进行解压
// //inspectService.inspect(inspectParameter),解析
InspectParameter inspectParameter = new InspectParameter(); return ResponseEntity.ok(200);
return ResponseEntity.ok(inspectService.inspect(inspectParameter));
} }
/**
* git下载代码进行评估
* @param path
* @return
*/
@PostMapping @PostMapping
public ResponseEntity inspect1(String path){ public ResponseEntity inspect1(String path){
System.out.println(path); System.out.println(path);
......
package com.zjty.inspect.controller;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@ServerEndpoint("/webServer/{uuid}")
@Component
@Slf4j
public class WebSocketServer {
private Logger logger = LoggerFactory.getLogger(getClass());
private static Map<String,WebSocketServer> map = new HashMap<>();
private Session session;
private String uuid;
@OnOpen
public void onOpen(Session session,@PathParam("uuid")String uuid){
this.session = session;
this.uuid = uuid;
//session.getOpenSessions().
//System.out.println("第一个" + uuid);
logger.info("uuid:"+uuid);
map.put(uuid,this);
try {
sendMessage("连接成功");
} catch (IOException e) {
logger.error("websocket IO异常");
}
logger.info("连接成功"+session.getId());
}
@OnClose
public void onClose(Session session){
map.remove(this.uuid);
logger.info("连接关闭"+session.getId());
}
@OnMessage
public void onMessage(Session session,String message){
// try {
//map.get(uuid).sendMessage(message);
logger.info(uuid+"sendMsg"+message);
// } catch (IOException e) {
// e.printStackTrace();
// }
}
@OnError
public void onError(Session session,Throwable error){
logger.info(error.getMessage());
error.printStackTrace();
}
/**
* 实现服务器主动推送
*/
public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
}
public static void sendIn(String sessionId,String message) throws IOException {
//System.out.println(message);
try {
map.get(sessionId).sendMessage(message);
}catch (Exception e){
log.info("向前台发送日志出错");
//e.printStackTrace();
}
}
}
...@@ -6,6 +6,7 @@ import java.util.ArrayList; ...@@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* 依赖树
* @author Mcj * @author Mcj
* @date 2020-02-18 11:19 * @date 2020-02-18 11:19
*/ */
......
...@@ -3,6 +3,7 @@ package com.zjty.inspect.entity; ...@@ -3,6 +3,7 @@ package com.zjty.inspect.entity;
import lombok.Data; import lombok.Data;
/** /**
* 依赖树封装
* @author Mcj * @author Mcj
* @date 2020-02-21 20:26 * @date 2020-02-21 20:26
*/ */
......
...@@ -4,10 +4,13 @@ import lombok.AllArgsConstructor; ...@@ -4,10 +4,13 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* 传入参数,需要保存
* @author Mcj * @author Mcj
* @date 2020-02-12 12:35 * @date 2020-02-12 12:35
*/ */
...@@ -15,7 +18,36 @@ import java.util.List; ...@@ -15,7 +18,36 @@ import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Entity
public class InspectParameter { public class InspectParameter {
String path;
List<Rule> ruleList = new ArrayList<>(); @Id
private String id;
/**
* 重构占比
*/
private String proportion;
/**
* 年利率
*/
private String moneyRate;
/**
* 原系统费用
*/
private Integer systemFund;
/**
* 模块数
*/
private Integer modules;
/**
* 每页预算
*/
private Integer pageBudget;
} }
...@@ -5,36 +5,83 @@ import com.zjty.inspect.utils.Inspector; ...@@ -5,36 +5,83 @@ import com.zjty.inspect.utils.Inspector;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;
import javax.persistence.*; import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
/**
* 报告
* @author mcj
*/
@Entity
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class Report { public class Report {
private Language language; /**
* 主键id uuid
*/
@Id
@Column(length = 48)
private String id;
/**
* git源代码地址
*/
private String gitAddress;
/**
* 架构,整合型还是分离型,根据jsp数量决定
*/
private String framework; private String framework;
private int fileNum;
private long lineNum; /**
* 代码管理方式,
*/
private String manager;
/** /**
* 取名,后端依赖 * 语言
*/ */
private List<PomDependency> backend; private String language;
/**
* 生成报告存储地址
*/
private String htmlAddress;
/**
* 适配方式
* 1:适配
* 2:重构
*/
@Column(length = 5)
private Integer recastMethod;
/**
* 总资金(万元)
*/
@Column(length = 10)
private Integer fund;
/**
* 数据创建时间
*/
@Column(name="create_time",columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP",insertable = false,updatable = false)
@Generated(GenerationTime.INSERT)
private Timestamp createDate;
/** /**
* 取名。前端依赖 * 数据更新时间
*/ */
private List<PomDependency> frontend; @Column(name="update_time",columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP",insertable = false)
@Transient @Generated(GenerationTime.ALWAYS)
private List<Inspector.Warn> warnList; private Timestamp updateDate;
private String compileFilePath;
public DependenceManagement dependenceManagement;
@ElementCollection
public List<String> jarPath;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
public enum DependenceManagement{ public enum DependenceManagement{
MAVEN,GRADLE,ANT MAVEN,GRADLE,ANT
......
...@@ -3,19 +3,52 @@ package com.zjty.inspect.entity; ...@@ -3,19 +3,52 @@ package com.zjty.inspect.entity;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Date;
/**
* 规则类
* @author mcj
*/
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Entity
public class Rule { public class Rule {
private String path; /**
* 主键id
*/
@Id
@Column(length = 48)
private String id;
/**
* 目标关键字
*/
private String target; private String target;
private String advice; /**
* 匹配的文件后缀
*/
private String suffix;
public Rule(String target,String advice){ /**
this.target = target; * 数据创建时间
this.advice = advice; */
} @Column(name="create_time",columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP",insertable = false,updatable = false)
@CreatedDate
private Date createDate;
/**
* 数据更新时间
*/
@Column(name="update_time",columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP",insertable = false)
@LastModifiedDate
private Date updateDate;
} }
...@@ -19,6 +19,10 @@ import java.nio.file.Path; ...@@ -19,6 +19,10 @@ import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.*; import java.util.*;
/**
* 解析
* @author mcj
*/
@Service @Service
public class InspectServiceImpl implements InspectService { public class InspectServiceImpl implements InspectService {
...@@ -37,36 +41,36 @@ public class InspectServiceImpl implements InspectService { ...@@ -37,36 +41,36 @@ public class InspectServiceImpl implements InspectService {
suffixLanguageMapping.put("go", Report.Language.GO); suffixLanguageMapping.put("go", Report.Language.GO);
List<Rule> ruleList = inspectParameter.getRuleList(); List<Rule> ruleList = inspectParameter.getRuleList();
//com.mysql.cj.jdbc.Driver//com.mysql.jdbc.Driver //com.mysql.cj.jdbc.Driver//com.mysql.jdbc.Driver
ruleList.add(new Rule("com.mysql.cj.jdbc.Driver", "建议修改为postgresql数据库驱动")); // ruleList.add(new Rule("com.mysql.cj.jdbc.Driver", "建议修改为postgresql数据库驱动"));
ruleList.add(new Rule("com.mysql.jdbc.Driver", "建议修改为postgresql数据库驱动")); // ruleList.add(new Rule("com.mysql.jdbc.Driver", "建议修改为postgresql数据库驱动"));
//net.sourceforge.jtds.jdbc.Driver//sqlserver // //net.sourceforge.jtds.jdbc.Driver//sqlserver
ruleList.add(new Rule("net.sourceforge.jtds.jdbc.Driver", "建议修改为postgresql数据库驱动")); // ruleList.add(new Rule("net.sourceforge.jtds.jdbc.Driver", "建议修改为postgresql数据库驱动"));
//COM.ibm.db2.jdbc.app.DB2Driver//com.ibm.db2.jcc.DB2Driver//COM.ibm.db2.jdbc.net.DB2Driver//com.ibm.db2.jcc.DB2Driver // //COM.ibm.db2.jdbc.app.DB2Driver//com.ibm.db2.jcc.DB2Driver//COM.ibm.db2.jdbc.net.DB2Driver//com.ibm.db2.jcc.DB2Driver
ruleList.add(new Rule("DB2Driver", "建议修改为postgresql数据库驱动")); // ruleList.add(new Rule("DB2Driver", "建议修改为postgresql数据库驱动"));
//oracle.jdbc.OracleDriver//oracle.jdbc.driver.OracleDriver // //oracle.jdbc.OracleDriver//oracle.jdbc.driver.OracleDriver
ruleList.add(new Rule("OracleDriver", "建议修改为postgresql数据库驱动")); // ruleList.add(new Rule("OracleDriver", "建议修改为postgresql数据库驱动"));
//
ruleList.add(new Rule("mysql-connector-java", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("mysql-connector-java", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("com.microsoft.sqlserver", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("com.microsoft.sqlserver", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("com.oracle", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("com.oracle", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("org.mariadb.jdbc", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("org.mariadb.jdbc", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("com.sap.cloud.db.jdbc", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("com.sap.cloud.db.jdbc", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("com.ibm.informix", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("com.ibm.informix", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("org.firebirdsql.jdbc", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("org.firebirdsql.jdbc", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("org.hsqldb", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("org.hsqldb", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("com.h2database", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("com.h2database", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("org.apache.derby", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("org.apache.derby", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("org.mongodb", "建议修改为postgresql依赖声明")); // ruleList.add(new Rule("org.mongodb", "建议修改为postgresql依赖声明"));
ruleList.add(new Rule("package.json", "需要nodejs环境")); // ruleList.add(new Rule("package.json", "需要nodejs环境"));
ruleList.add(new Rule("public native", "这里用到了JNI")); // ruleList.add(new Rule("public native", "这里用到了JNI"));
ruleList.add(new Rule("<packaging>jar</packaging>", "建议修改打包方式为war包并排除掉springboot内置的tomcat,以部署到国产化中间件上")); // ruleList.add(new Rule("<packaging>jar</packaging>", "建议修改打包方式为war包并排除掉springboot内置的tomcat,以部署到国产化中间件上"));
ruleList.add(new Rule("WebOffice", "这里用到了weboffice文档展示编辑插件")); // ruleList.add(new Rule("WebOffice", "这里用到了weboffice文档展示编辑插件"));
ruleList.add(new Rule("webOffice", "这里用到了weboffice文档展示编辑插件")); // ruleList.add(new Rule("webOffice", "这里用到了weboffice文档展示编辑插件"));
ruleList.add(new Rule("weboffice", "这里用到了weboffice文档展示编辑插件")); // ruleList.add(new Rule("weboffice", "这里用到了weboffice文档展示编辑插件"));
ruleList.add(new Rule("Weboffice", "这里用到了weboffice文档展示编辑插件")); // ruleList.add(new Rule("Weboffice", "这里用到了weboffice文档展示编辑插件"));
ruleList.add(new Rule("pdfobject.min.js", "这里用到了pdf文档展示插件")); // ruleList.add(new Rule("pdfobject.min.js", "这里用到了pdf文档展示插件"));
ruleList.add(new Rule("pdfobject.js", "这里用到了pdf文档展示插件")); // ruleList.add(new Rule("pdfobject.js", "这里用到了pdf文档展示插件"));
ruleList.add(new Rule(".swf", "这里用到了flash流媒体播放插件")); // ruleList.add(new Rule(".swf", "这里用到了flash流媒体播放插件"));
String path = inspectParameter.getPath(); String path = inspectParameter.getPath();
//调用下载服务下载源代码 //调用下载服务下载源代码
...@@ -89,26 +93,6 @@ public class InspectServiceImpl implements InspectService { ...@@ -89,26 +93,6 @@ public class InspectServiceImpl implements InspectService {
FileWriter writer = new FileWriter(file2); FileWriter writer = new FileWriter(file2);
writer.write("系统名称:" + file1.getName() + "\n"); writer.write("系统名称:" + file1.getName() + "\n");
writer.write("评估时间:" + new Date() + "\n\n"); writer.write("评估时间:" + new Date() + "\n\n");
writer.write("语言:" + report.getLanguage() + "\t");
writer.write("依赖管理工具:" + report.getDependenceManagement() + "\t");
writer.write("架构:" + report.getFramework() + "\n");
writer.write("文件数量:" + report.getFileNum() + "\t");
writer.write("代码行数:" + report.getLineNum() + "\n\n");
writer.write("后端依赖列表:\n");
for (PomDependency dependency : report.getBackend()) {
writer.write("" + dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion() + ":" + dependency.getGradle() + "\n");
}
writer.write("\n前端依赖列表:\n");
for (PomDependency dependency : report.getFrontend()) {
writer.write("" + dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion() + ":");
}
int j = 1;
for (Inspector.Warn warn : report.getWarnList()) {
writer.write(j++ + "、所在文件:" + warn.getPath() + " 行数:" + warn.getLine() + "行 关键字:" + warn.getKeyWord() + "\n"
+ "建议:" + warn.getSuggest());
}
writer.close(); writer.close();
} catch (IOException e) { } catch (IOException e) {
...@@ -129,26 +113,6 @@ public class InspectServiceImpl implements InspectService { ...@@ -129,26 +113,6 @@ public class InspectServiceImpl implements InspectService {
FileWriter writer = new FileWriter(file2); FileWriter writer = new FileWriter(file2);
writer.write("系统名称:" + file.getName() + "\n"); writer.write("系统名称:" + file.getName() + "\n");
writer.write("评估时间:" + new Date() + "\n\n"); writer.write("评估时间:" + new Date() + "\n\n");
writer.write("语言:" + report.getLanguage() + "\t");
writer.write("依赖管理工具:" + report.getDependenceManagement() + "\t");
writer.write("架构:" + report.getFramework() + "\n");
writer.write("文件数量:" + report.getFileNum() + "\t");
writer.write("代码行数:" + report.getLineNum() + "\n\n");
writer.write("后端依赖列表:\n");
for (PomDependency dependency : report.getBackend()) {
writer.write("" + dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion() + ":" + dependency.getGradle() + "\n");
}
writer.write("\n前端依赖列表:\n");
for (PomDependency dependency : report.getFrontend()) {
writer.write("" + dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion() + ":");
}
int j = 1;
for (Inspector.Warn warn : report.getWarnList()) {
writer.write(j++ + "、所在文件:" + warn.getPath() + " 行数:" + warn.getLine() + "行 关键字:" + warn.getKeyWord() + "\n"
+ "建议:" + warn.getSuggest());
}
writer.close(); writer.close();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -23,134 +23,65 @@ import java.util.*; ...@@ -23,134 +23,65 @@ import java.util.*;
@NoArgsConstructor @NoArgsConstructor
public class Inspector { public class Inspector {
// public static void main(String[] args) {
//
//
// //Project project = new Project();
//
// Map<String, Report.Language> suffixLanguageMapping = new HashMap<>();
// suffixLanguageMapping.put("java", Report.Language.JAVA);
// suffixLanguageMapping.put("cpp", Report.Language.CPP);
// suffixLanguageMapping.put("vue", Report.Language.VUE);
// suffixLanguageMapping.put("py", Report.Language.PYTHON);
// suffixLanguageMapping.put("jsp", Report.Language.JSP);
// suffixLanguageMapping.put("html", Report.Language.ONLYVIEW);
// suffixLanguageMapping.put("js", Report.Language.JAVASCRIPT);
// suffixLanguageMapping.put("go", Report.Language.GO);
//
// List<Rule> ruleList = new ArrayList<>();
// //com.mysql.cj.jdbc.Driver//com.mysql.jdbc.Driver
// ruleList.add(new Rule("com.mysql.cj.jdbc.Driver", "建议修改为postgresql数据库驱动"));
// ruleList.add(new Rule("com.mysql.jdbc.Driver", "建议修改为postgresql数据库驱动"));
//
//
// //net.sourceforge.jtds.jdbc.Driver//sqlserver
// ruleList.add(new Rule("net.sourceforge.jtds.jdbc.Driver", "建议修改为postgresql数据库驱动"));
// //COM.ibm.db2.jdbc.app.DB2Driver//com.ibm.db2.jcc.DB2Driver//COM.ibm.db2.jdbc.net.DB2Driver//com.ibm.db2.jcc.DB2Driver
// ruleList.add(new Rule("DB2Driver", "建议修改为postgresql数据库驱动"));
// //oracle.jdbc.OracleDriver//oracle.jdbc.driver.OracleDriver
// ruleList.add(new Rule("OracleDriver", "建议修改为postgresql数据库驱动"));
//
// ruleList.add(new Rule("mysql-connector-java", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.microsoft.sqlserver", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.oracle", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.mariadb.jdbc", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.sap.cloud.db.jdbc", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.ibm.informix", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.firebirdsql.jdbc", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.hsqldb", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("com.h2database", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.apache.derby", "建议修改为postgresql依赖声明"));
// ruleList.add(new Rule("org.mongodb", "建议修改为postgresql依赖声明"));
//
// ruleList.add(new Rule("public native", "这里用到了JNI"));
// ruleList.add(new Rule("<packaging>jar</packaging>", "建议修改打包方式为war包并排除掉springboot内置的tomcat,以部署到国产化中间件上"));
// ruleList.add(new Rule("WebOffice", "这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("webOffice", "这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("weboffice", "这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("Weboffice", "这里用到了weboffice文档展示编辑插件"));
// ruleList.add(new Rule("pdfobject.min.js", "这里用到了pdf文档展示插件"));
// ruleList.add(new Rule("pdfobject.js", "这里用到了pdf文档展示插件"));
// ruleList.add(new Rule(".swf", "这里用到了flash流媒体播放插件"));
//
// String path = Inspector.class.getProtectionDomain().getCodeSource().getLocation().getFile();
// String decode = null;
// try {
// decode = URLDecoder.decode(path, "UTF-8");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// File outfile = new File(decode);
//
// int i = 0;
// System.out.println("请输入文件夹路径,该文件夹中包含多个项目");
// Scanner scanner = new Scanner(System.in);
// String line = scanner.nextLine();
// File file = new File(line);
// File[] files = file.listFiles();
// for (File file1 : files) {
// Report report = new Inspector(file1.getPath(), suffixLanguageMapping, ruleList).inspect();
//
// File file2 = new File(outfile.getParent() + "/评估报告" + i++ + ".txt");
// if (file2.exists()) {
// file2.delete();
// }
// try {
// System.out.println("生成报告文件" + file2.getAbsolutePath());
// file2.createNewFile();
// FileWriter writer = new FileWriter(file2);
// writer.write("系统名称:" + file1.getName() + "\n");
// writer.write("评估时间:" + new Date() + "\n\n");
// writer.write("语言:" + report.getLanguage() + "\t");
// writer.write("依赖管理工具:" + report.getDependenceManagement() + "\t");
// writer.write("是否前后端分离:" + report.getIsSeparate() + "\t");
// writer.write("架构:" + report.getFramework() + "\n");
// writer.write("数据库类型:" + report.getDatabaseType() + "\t");
// writer.write("文件数量:" + report.getFileNum() + "\t");
// writer.write("代码行数:" + report.getLineNum() + "\n\n");
//
// writer.write("后端依赖列表:\n");
// for (PomDependency dependency : report.getBackend()) {
//
// writer.write("" + dependency.getGroupId() + "\t" + dependency.getArtifactId() + "\t" + dependency.getVersion() + "\n");
// }
// writer.write("\n前端依赖列表:\n");
// for (PomDependency dependency : report.getFrontend()) {
// writer.write("" + dependency.getGroupId() + "\t" + dependency.getArtifactId() + "\t" + dependency.getVersion() + "\n");
// }
//
// int j = 1;
// for (Warn warn : report.getWarnList()) {
// writer.write(j++ + "、所在文件:" + warn.getPath() + " 行数:" + warn.getLine() + "行 关键字:" + warn.getKeyWord() + "\n"
// + "建议:" + warn.getSuggest());
// }
// writer.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
//
// }
/**
* 报告对象
*/
private Report report; private Report report;
private Map<String, Counter> languageMatchMap;
/**
* 语言
*/
private Map<String, Counter> languageMatchMap ;
/**
* 后缀语言
*/
private Map<String, Report.Language> suffixLanguageMapping; private Map<String, Report.Language> suffixLanguageMapping;
/**
* 路径
*/
private String path; private String path;
/**
* 规则列表
*/
private List<Rule> ruleList; private List<Rule> ruleList;
/**
* 配置文件后缀
* xml:list【路径】
*/
private Map<String, List<Path>> configFileTypePathsMapping; private Map<String, List<Path>> configFileTypePathsMapping;
/**
* 警告,建议
*/
private List<Warn> warnList; private List<Warn> warnList;
/**
* 后端依赖
*/
private List<PomDependency> jarFiles; private List<PomDependency> jarFiles;
/**
* 前端依赖
*/
private List<PomDependency> jsFiles; private List<PomDependency> jsFiles;
/**
* 版本version
*/
private HashMap<String,String> versionMap = new HashMap<>(); private HashMap<String,String> versionMap = new HashMap<>();
public Inspector(String path, Map<String, Report.Language> suffixLanguageMapping, List<Rule> ruleList) { public Inspector(String path, Map<String, Report.Language> suffixLanguageMapping, List<Rule> ruleList) {
this.path = path; this.path = path;
//内存中配置的语言map
this.suffixLanguageMapping = suffixLanguageMapping; this.suffixLanguageMapping = suffixLanguageMapping;
this.ruleList = ruleList; this.ruleList = ruleList;
this.languageMatchMap = new HashMap<>(); this.languageMatchMap = new HashMap<>();
for (String s : suffixLanguageMapping.keySet()) { for (String s : suffixLanguageMapping.keySet()) {
//配置如:java,0
languageMatchMap.put(s, new Counter()); languageMatchMap.put(s, new Counter());
} }
/** /**
...@@ -268,7 +199,7 @@ public class Inspector { ...@@ -268,7 +199,7 @@ public class Inspector {
String s = allLines.get(i); String s = allLines.get(i);
for (Rule rule : ruleList) { for (Rule rule : ruleList) {
if (s.indexOf(rule.getTarget()) > -1) { if (s.indexOf(rule.getTarget()) > -1) {
warnList.add(new Warn(file.toString(), i + 1, rule.getTarget(), rule.getAdvice())); // warnList.add(new Warn(file.toString(), i + 1, rule.getTarget()));
} }
} }
} }
...@@ -295,8 +226,8 @@ public class Inspector { ...@@ -295,8 +226,8 @@ public class Inspector {
//基本信息 //基本信息
@Transactional @Transactional
public Report analysis() { public Report analysis() {
report.setFileNum(fileNum); // report.setFileNum(fileNum);
report.setLineNum(lineNum); // report.setLineNum(lineNum);
//report.setLanguage(Report.Language.ONLYVIEW); //report.setLanguage(Report.Language.ONLYVIEW);
Report.Language most = null; Report.Language most = null;
int maxnum = 0; int maxnum = 0;
...@@ -307,11 +238,11 @@ public class Inspector { ...@@ -307,11 +238,11 @@ public class Inspector {
maxnum = entry.getValue().getNumber(); maxnum = entry.getValue().getNumber();
} }
} }
report.setLanguage(most == null ? Report.Language.UNKNOW : most); // report.setLanguage(most == null ? Report.Language.UNKNOW : most);
report.setFramework(most == null ? Report.Language.UNKNOW.name() : most.name()); // report.setFramework(most == null ? Report.Language.UNKNOW.name() : most.name());
report.setBackend(jarFiles); //report.setBackend(jarFiles);
report.setFrontend(jsFiles); //report.setFrontend(jsFiles);
report.setCreateTime(new Date()); //report.setCreateTime(new Date());
/** /**
* 对于具体的配置文件对应的处理方法 * 对于具体的配置文件对应的处理方法
* 增加要处理的文件类型需要在这里增加相应的处理方法 * 增加要处理的文件类型需要在这里增加相应的处理方法
...@@ -335,8 +266,8 @@ public class Inspector { ...@@ -335,8 +266,8 @@ public class Inspector {
* 编译方式打包方式和打好的包的路径 * 编译方式打包方式和打好的包的路径
*/ */
if (path.getFileName().endsWith("pom.xml")) { if (path.getFileName().endsWith("pom.xml")) {
report.setDependenceManagement(Report.DependenceManagement.MAVEN); // report.setDependenceManagement(Report.DependenceManagement.MAVEN);
report.setCompileFilePath(path.toString()); // report.setCompileFilePath(path.toString());
//解析pom文件 //解析pom文件
ProjectPom projectPom = AnalysisFile.analysisPom(path); ProjectPom projectPom = AnalysisFile.analysisPom(path);
//设置依赖 //设置依赖
...@@ -362,8 +293,8 @@ public class Inspector { ...@@ -362,8 +293,8 @@ public class Inspector {
* 编译方式打包方式和打好的包的路径 * 编译方式打包方式和打好的包的路径
*/ */
if (path.getFileName().endsWith("build.gradle")) { if (path.getFileName().endsWith("build.gradle")) {
report.setDependenceManagement(Report.DependenceManagement.GRADLE); // report.setDependenceManagement(Report.DependenceManagement.GRADLE);
report.setCompileFilePath(path.toString()); // report.setCompileFilePath(path.toString());
//解析pom文件 //解析pom文件
List<PomDependency> pomDependencies = AnalysisFile.analysisGradle(path); List<PomDependency> pomDependencies = AnalysisFile.analysisGradle(path);
//设置依赖 //设置依赖
...@@ -392,19 +323,19 @@ public class Inspector { ...@@ -392,19 +323,19 @@ public class Inspector {
} }
} }
if (report.getLanguage() == Report.Language.JAVA) { // if (report.getLanguage() == Report.Language.JAVA) {
String tips = "该项目采用java语言开发,使用了主流框架,未见生僻插件,适配无明显难点。预计适配工作量较小,适配成功率高"; // String tips = "该项目采用java语言开发,使用了主流框架,未见生僻插件,适配无明显难点。预计适配工作量较小,适配成功率高";
// TODO: 2020-02-16 人工估计工作量,一天200行代码 // // TODO: 2020-02-16 人工估计工作量,一天200行代码
} // }
List<PomDependency> backend1 = report.getBackend(); // List<PomDependency> backend1 = report.getBackend();
for (PomDependency pomDependency : backend1) { // for (PomDependency pomDependency : backend1) {
String version = pomDependency.getVersion(); // String version = pomDependency.getVersion();
String versionString = version.replaceAll("\\$", "").replaceAll("\\{", "").replaceAll("}", ""); // String versionString = version.replaceAll("\\$", "").replaceAll("\\{", "").replaceAll("}", "");
if(versionMap.containsKey(versionString)){ // if(versionMap.containsKey(versionString)){
pomDependency.setVersion(versionMap.get(versionString)); // pomDependency.setVersion(versionMap.get(versionString));
} // }
} // }
report.setWarnList(warnList); // report.setWarnList(warnList);
return report; return report;
} }
......
...@@ -5,7 +5,7 @@ spring.profiles.active=dev ...@@ -5,7 +5,7 @@ spring.profiles.active=dev
# 服务器相关配置 # 服务器相关配置
server.port=8079 server.port=8079
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
# 日志文件相关配置 # 日志文件相关配置
# logging.level.org.hibernate.sql=debug # logging.level.org.hibernate.sql=debug
logging.file.path=./log/master.log logging.file.path=./log/master.log
...@@ -18,7 +18,7 @@ logging.file.path=./log/master.log ...@@ -18,7 +18,7 @@ logging.file.path=./log/master.log
# spring-data-jpa 相关配置 # spring-data-jpa 相关配置
# 指jpa对表生成的策略 # 指jpa对表生成的策略
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=create
# 是否显示sql语句 # 是否显示sql语句
spring.jpa.show-sql=false spring.jpa.show-sql=false
# 格式化sql # 格式化sql
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论