Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
adaptation-master
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
912协同工作系统
项目监控管理工具
adaptation-master
Commits
7f744813
提交
7f744813
authored
1月 03, 2020
作者:
wyl
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'wyl' 到 'master'
Wyl 查看合并请求 ty_wyl/adaptation-master1!52
上级
25e208a8
39804980
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
122 行增加
和
22 行删除
+122
-22
Project.java
...ava/com/zjty/adaptationmaster/adaptor/entity/Project.java
+1
-1
Report.java
...java/com/zjty/adaptationmaster/adaptor/entity/Report.java
+1
-1
ReportEntity.java
...om/zjty/adaptationmaster/adaptor/entity/ReportEntity.java
+2
-4
Dependency.java
...ster/adaptor/entity/pomEntity/SecondFloor/Dependency.java
+6
-6
InspectServiceImpl.java
...tationmaster/adaptor/service/Impl/InspectServiceImpl.java
+1
-1
AnalysisPom.java
...ain/java/com/zjty/adaptationmaster/utils/AnalysisPom.java
+12
-1
Inspector.java
src/main/java/com/zjty/adaptationmaster/utils/Inspector.java
+99
-8
没有找到文件。
src/main/java/com/zjty/adaptationmaster/adaptor/entity/Project.java
浏览文件 @
7f744813
...
...
@@ -57,7 +57,7 @@ public class Project {
private
boolean
compileSuccess
=
false
;
@OneToOne
private
Report
report
;
private
Report
Entity
report
;
private
boolean
deploySuccess
=
false
;
...
...
src/main/java/com/zjty/adaptationmaster/adaptor/entity/Report.java
浏览文件 @
7f744813
...
...
@@ -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
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/entity/ReportEntity.java
浏览文件 @
7f744813
...
...
@@ -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
...
...
src/main/java/com/zjty/adaptationmaster/adaptor/entity/pomEntity/SecondFloor/Dependency.java
浏览文件 @
7f744813
...
...
@@ -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;
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/Impl/InspectServiceImpl.java
浏览文件 @
7f744813
...
...
@@ -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
(
report
EntitySave
);
report
.
setId
(
reportEntitySave
.
getId
());
return
ServerResponse
.
success
(
report
);
}
else
{
...
...
src/main/java/com/zjty/adaptationmaster/utils/AnalysisPom.java
浏览文件 @
7f744813
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
;
}
}
src/main/java/com/zjty/adaptationmaster/utils/Inspector.java
浏览文件 @
7f744813
...
...
@@ -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
(
dependencies
1
);
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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论