提交 7f744813 authored 作者: wyl's avatar wyl

合并分支 'wyl' 到 'master'

Wyl 查看合并请求 ty_wyl/adaptation-master1!52
......@@ -57,7 +57,7 @@ public class Project {
private boolean compileSuccess = false;
@OneToOne
private Report report;
private ReportEntity report;
private boolean deploySuccess = false;
......
......@@ -47,6 +47,6 @@ public class Report {
MYSQL,ORACLE,SQLSERVER,POSTGRE
}
public enum Language{
JAVA,PYTHON,CPP,JSP,ASP,ONLYVIEW
JAVA,PYTHON,CPP,JSP,ASP,ONLYVIEW,UNKNOW,JAVASCRIPT,GO
}
}
......@@ -6,10 +6,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.*;
import java.util.List;
/**
......@@ -30,6 +27,7 @@ public class ReportEntity {
private Report.DatabaseType databaseType;//数据库类型
private int fileNum;
private long lineNum;
@Column(columnDefinition = "text")
private String dependence;
private Report.Separate isSeparate;//前后端是否分离
private String compileFilePath;//项目编译文件,如果是maven项目,用maven编译,那么就是pom.xml
......
......@@ -21,12 +21,12 @@ public class Dependency {
名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。
如果设置extensions为 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整
*/
private String type;
//private String type;
/*依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,
如果你想要构建两个单独的构件成JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生
成两个单独的JAR构件
*/
private String classifier;
//private String classifier;
/*
依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。
- compile :默认范围,用于编译
......@@ -38,12 +38,12 @@ public class Dependency {
- optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用
*/
private String scope;
//private String scope;
/*
仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件
系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}
*/
private String systemPath;
//private String systemPath;
/*
当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的
依赖。此元素主要用于解决版本冲突问题
......@@ -53,7 +53,7 @@ public class Dependency {
可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。
可选依赖阻断依赖的传递性
*/
private String optional;
//private String optional;
// private class Exclusion{
// private String artifactId;
......@@ -62,5 +62,5 @@ public class Dependency {
//private List<Dependency> parentDependencies;//
private int reportId;
//private int reportId;
}
......@@ -69,7 +69,7 @@ public class InspectServiceImpl implements InspectService {
}
Project one = projectDao.getOne(project.getId());
ReportEntity reportEntitySave = reportDao.save(reportEntity);
one.setReport(report);
one.setReport(reportEntitySave);
report.setId(reportEntitySave.getId());
return ServerResponse.success(report);
}else{
......
package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.ProjectPom;
import com.zjty.adaptationmaster.adaptor.entity.pomEntity.SecondFloor.Dependency;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
public class AnalysisPom {
public static ProjectPom analysis(Path pomPath){
return null;
List<Dependency> dependencies = new ArrayList<>();
Dependency dependency = new Dependency();
dependency.setGroupId("aaa.bbb");
dependency.setArtifactId("ccc.ddd");
dependency.setVersion("1.0.0");
dependencies.add(dependency);
ProjectPom projectPom = new ProjectPom();
projectPom.setDependencies(dependencies);
return projectPom;
}
}
......@@ -32,6 +32,69 @@ import java.util.*;
*/
public class Inspector {
public static void main(String[] args) {
System.out.println(LocalDateTime.now());
//System.out.println("请输入项目地址,然后回车");
//Scanner scanner = new Scanner(System.in);
//String next = scanner.next();
//Project project = new Project();
//project.setCodeUrl(next);
Map<String, Report.Language> suffixLanguageMapping = new HashMap<>();
suffixLanguageMapping.put("java",Report.Language.JAVA);
suffixLanguageMapping.put("cpp",Report.Language.CPP);
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("pdfobject.min.js","这里用到了pdf文档展示插件"));
ruleList.add(new Rule("pdfobject.js","这里用到了pdf文档展示插件"));
ruleList.add(new Rule(".swf","这里用到了flash流媒体播放插件"));
//String[] projectSrc = {"D:\\project\\testAccess\\rhasspy-master"};
//多个子项目
String[] projectSrc = {"D:\\project\\testAccess\\SpringBoot-Labs-master"/*"D:\\project\\bservice","D:\\project\\debug","D:\\project\\glutton"*/};
//String[] projectSrc = {"D:\\project\\testAccess\\Telegram-master"};
for(String s:projectSrc){
Project project = new Project();
project.setCodeUrl(s);
Inspector inspector = new Inspector(project,suffixLanguageMapping,ruleList);
Report inspect = inspector.inspect();
System.out.println("语言:"+inspect.getLanguage()+" 数据库:"+inspect.getDatabaseType()+" 依赖管理:"+inspect.getDependenceManagement()+" 文件数量:"+inspect.getFileNum()+" 代码行数:"+inspect.getLineNum());
for(Warn warn:inspect.getWarnList()){
System.out.println("\t"+warn);
}
//System.out.println(inspect);
}
System.out.println(LocalDateTime.now());
}
private Project project;
private Report report;
......@@ -157,14 +220,21 @@ public class Inspector {
public Report analysis(){
report.setFileNum(fileNum);
report.setLineNum(lineNum);
report.setLanguage(Report.Language.ONLYVIEW);
//report.setLanguage(Report.Language.ONLYVIEW);
Report.Language most = null;
int maxnum = 0;
for(Map.Entry<String,Counter> entry:languageMatchMap.entrySet()){
if(entry.getValue().getNumber()>0){
if(!entry.getKey().equals("html")){
report.setLanguage(suffixLanguageMapping.get(entry.getKey()));
}
if(entry.getValue().getNumber()>maxnum){
most = suffixLanguageMapping.get(entry.getKey());
maxnum = entry.getValue().getNumber();
}
// if(entry.getValue().getNumber()>0){
// if(!entry.getKey().equals("html")){
// report.setLanguage(suffixLanguageMapping.get(entry.getKey()));
// }
// }
}
report.setLanguage(most==null? Report.Language.UNKNOW:most);
/**
* 对于具体的配置文件对应的处理方法
* 增加要处理的文件类型需要在这里增加相应的处理方法
......@@ -191,7 +261,7 @@ public class Inspector {
ProjectPom analysis = AnalysisPom.analysis(path);
//设置依赖
List<Dependency> dependencies = analysis.getDependencies();
dependencies1.addAll(dependencies1);
dependencies1.addAll(dependencies);
SAXReader reader = new SAXReader();
Document document = null;
......@@ -225,7 +295,10 @@ public class Inspector {
e.printStackTrace();
}
String datasourceDriver = properties.getProperty("spring.datasource.driver-class-name");
String driverClassName = properties.getProperty("jdbc.driverClassName");
String active = properties.getProperty("spring.profiles.active");
if(active!=null){
System.out.println("生效的配置文件:" + active + path);
//System.out.println(path.getParent());
File file = new File(path.getParent().toString() + "/application-" + active + ".properties");
if (file.exists()) {
......@@ -233,12 +306,19 @@ public class Inspector {
try {
properties1.load(new FileInputStream(file));
String driver = properties1.getProperty("spring.datasource.driver-class-name");
if (driver != null){ datasourceDriver = driver;}
if (driver != null) {
datasourceDriver = driver;
}
String driverName = properties1.getProperty("jdbc.driverClassName");
if(driverClassName != null){
driverClassName = driverName;
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("没有找到active配置文件");
//System.out.println("没有找到active配置文件");
}
}
if (datasourceDriver != null) {
if (datasourceDriver.contains(Report.DatabaseType.MYSQL.name().toLowerCase())) {
......@@ -251,6 +331,17 @@ public class Inspector {
report.setDatabaseType(Report.DatabaseType.SQLSERVER);
}
}
if (driverClassName != null) {
if (driverClassName.contains(Report.DatabaseType.MYSQL.name().toLowerCase())) {
report.setDatabaseType(Report.DatabaseType.MYSQL);
} else if (driverClassName.contains(Report.DatabaseType.POSTGRE.name().toLowerCase())) {
report.setDatabaseType(Report.DatabaseType.POSTGRE);
} else if (driverClassName.contains(Report.DatabaseType.ORACLE.name().toLowerCase())) {
report.setDatabaseType(Report.DatabaseType.ORACLE);
} else if (driverClassName.contains(Report.DatabaseType.SQLSERVER.name().toLowerCase())) {
report.setDatabaseType(Report.DatabaseType.SQLSERVER);
}
}
}
}
break;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论