Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
inspect
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
912协同工作系统
项目监控管理工具
inspect
Commits
f8006732
提交
f8006732
authored
3月 04, 2020
作者:
马晨俊
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mcj:编写注释,更新依赖是否支持还是未知逻辑
上级
9e3a0816
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
70 行增加
和
27 行删除
+70
-27
TechnologyDao.java
src/main/java/com/zjty/inspect/dao/TechnologyDao.java
+12
-0
PomDependency.java
src/main/java/com/zjty/inspect/entity/PomDependency.java
+1
-0
ReportVo.java
src/main/java/com/zjty/inspect/entity/ReportVo.java
+1
-1
Technology.java
src/main/java/com/zjty/inspect/entity/Technology.java
+2
-1
task.java
src/main/java/com/zjty/inspect/task/task.java
+17
-2
Inspector.java
src/main/java/com/zjty/inspect/utils/Inspector.java
+37
-23
没有找到文件。
src/main/java/com/zjty/inspect/dao/TechnologyDao.java
浏览文件 @
f8006732
...
...
@@ -14,5 +14,17 @@ public interface TechnologyDao extends JpaRepository<Technology,String> {
*/
Technology
findAllByTechnologyNameEquals
(
String
name
);
/**
* 根据名称模糊查询
* @param name 技术名称
* @return
*/
List
<
Technology
>
findAllByTechnologyNameLike
(
String
name
);
/**
* 根据id查询
* @param ids ids
* @return
*/
List
<
Technology
>
findAllByIdIn
(
List
<
String
>
ids
);
}
src/main/java/com/zjty/inspect/entity/PomDependency.java
浏览文件 @
f8006732
...
...
@@ -25,6 +25,7 @@ public class PomDependency implements Serializable {
/**
* 1:支持
* 2:不支持
* 3:未知
*/
private
Integer
support
;
}
src/main/java/com/zjty/inspect/entity/ReportVo.java
浏览文件 @
f8006732
...
...
@@ -43,7 +43,7 @@ public class ReportVo {
* 2:重构
*/
@Column
(
length
=
5
)
private
Integer
recastMethod
;
private
String
recastMethod
;
/**
* 源代码地址
...
...
src/main/java/com/zjty/inspect/entity/Technology.java
浏览文件 @
f8006732
...
...
@@ -41,8 +41,9 @@ public class Technology {
/**
* 1:支持
* 2:不支持
* 3:未知
*/
private
Integer
support
=
1
;
private
Integer
support
;
/**
* 1:前端技术
...
...
src/main/java/com/zjty/inspect/task/task.java
浏览文件 @
f8006732
...
...
@@ -134,8 +134,6 @@ public class task implements CommandLineRunner {
coefficientMode7
.
setMediumCoefficient
(
0
D
);
coefficientMode7
.
setTopCoefficient
(
0
D
);
coefficientModels
.
add
(
coefficientMode6
);
coefficientModels
.
add
(
coefficientMode5
);
coefficientModels
.
add
(
coefficientMode4
);
...
...
@@ -156,10 +154,18 @@ public class task implements CommandLineRunner {
Technology
technology1
=
new
Technology
();
technology1
.
setTechnologyName
(
"非国产化依赖"
);
technology1
.
setSupport
(
2
);
technology1
.
setAdvice
(
"国产化不支持的依赖"
);
technology1
.
setFund
(
5
);
technology1
.
setId
(
UUIDUtil
.
getUUID
());
Technology
technology2
=
new
Technology
();
technology2
.
setTechnologyName
(
"未知依赖"
);
technology2
.
setSupport
(
3
);
technology2
.
setAdvice
(
"未知的依赖"
);
technology2
.
setFund
(
5
);
technology2
.
setId
(
UUIDUtil
.
getUUID
());
Rule
rule
=
new
Rule
();
rule
.
setId
(
UUIDUtil
.
getUUID
());
rule
.
setSuffix
(
"*"
);
...
...
@@ -172,9 +178,18 @@ public class task implements CommandLineRunner {
rule1
.
setTarget
(
"mysql-connect"
);
rule1
.
setTechnologyId
(
technology1
.
getId
());
Rule
rule2
=
new
Rule
();
rule2
.
setId
(
UUIDUtil
.
getUUID
());
rule2
.
setSuffix
(
"*"
);
rule2
.
setTarget
(
"mysql-connect"
);
rule2
.
setTechnologyId
(
technology2
.
getId
());
technologyDao
.
save
(
technology
);
technologyDao
.
save
(
technology1
);
technologyDao
.
save
(
technology2
);
ruleDao
.
save
(
rule
);
ruleDao
.
save
(
rule1
);
ruleDao
.
save
(
rule2
);
}
}
src/main/java/com/zjty/inspect/utils/Inspector.java
浏览文件 @
f8006732
...
...
@@ -62,6 +62,11 @@ public class Inspector {
* 不支持的国产化技术
*/
Technology
techNotCnSupport
;
/**
* 未知依赖
*/
Technology
techUnKnowSupport
;
/**
* 计算预算的参数对象
*/
...
...
@@ -95,11 +100,14 @@ public class Inspector {
* 配置文件后缀
* xml:list【路径】
*/
private
Map
<
String
,
List
<
Path
>>
configFileTypePathsMapping
=
new
HashMap
<>();
private
Map
<
String
,
List
<
Path
>>
ruleSuffixMap
=
new
HashMap
<>();
private
Map
<
String
,
List
<
Rule
>>
ruleSuffixList
=
new
HashMap
<>();
private
Map
<
String
,
Technology
>
technologyHashMap
=
new
HashMap
<>();
/**
* 统计各后缀文件路径与出现次数,顺便解析jar与js文件
* FileVisitResult.CONTINUE 继续遍历
...
...
@@ -113,6 +121,7 @@ public class Inspector {
//查询技术,构造支持与非支持技术对象
techJavaSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"Java依赖"
);
techNotCnSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"非国产化依赖"
);
techUnKnowSupport
=
technologyDao
.
findAllByTechnologyNameEquals
(
"未知依赖"
);
//统计项目组成文件构成
for
(
String
languageName
:
suffixLanguageMapping
.
keySet
())
{
//配置如:java,0
...
...
@@ -128,13 +137,16 @@ public class Inspector {
//查询所有规则
this
.
ruleList
=
ruleDao
.
findAll
();
Set
<
String
>
id
=
ruleList
.
stream
().
map
(
Rule:
:
getTechnologyId
).
collect
(
Collectors
.
toSet
());
List
<
Technology
>
technologies
=
technologyDao
.
findAllByIdIn
(
new
ArrayList
<>(
id
));
for
(
Technology
technology
:
technologies
)
{
technologyHashMap
.
put
(
technology
.
getId
(),
technology
);
}
for
(
Rule
rule
:
ruleList
)
{
if
(!
ruleSuffixMap
.
containsKey
(
rule
.
getSuffix
()))
{
//用于存储各种后缀的文件集合
ruleSuffixMap
.
put
(
rule
.
getSuffix
(),
new
ArrayList
<>());
//将每个后缀的规则分类
//key:规则后缀
//value:规则集合
...
...
@@ -227,9 +239,7 @@ public class Inspector {
//为普通用户上传,依赖需要检查是否支持。
int
i
=
valiWarn
(
ruleList
,
file
,
split
[
0
],
0
);
//如果值为0则代表是有不支持技术到匹配
if
(
i
==
0
)
{
pomDependency
.
setSupport
(
2
);
}
pomDependency
.
setSupport
(
i
);
}
dependencyVo
.
add
(
projectPom
);
}
...
...
@@ -275,9 +285,9 @@ public class Inspector {
report
.
setFramework
(
languageMatchMap
.
get
(
"jsp"
).
i
>
0
?
"混合型架构"
:
"分离型架构"
);
//设置是否需要重构
if
(
languageMatchMap
.
get
(
"jsp"
).
i
==
0
&
languageMatchMap
.
get
(
"java"
).
i
==
0
)
{
report
.
setRecastMethod
(
2
);
report
.
setRecastMethod
(
"建议重构"
);
}
else
{
report
.
setRecastMethod
(
1
);
report
.
setRecastMethod
(
"建议适配"
);
}
//解析配置文件集合
for
(
Map
.
Entry
<
String
,
List
<
Path
>>
entry
:
configFileTypePathsMapping
.
entrySet
())
{
...
...
@@ -331,13 +341,16 @@ public class Inspector {
if
(
path1
.
toAbsolutePath
().
toString
().
endsWith
(
"jar"
)
||
path1
.
toAbsolutePath
().
toString
().
endsWith
(
"class"
))
{
continue
;
}
if
(
path1
.
toAbsolutePath
().
toString
().
endsWith
(
"xml"
))
{
System
.
out
.
println
(
"d"
);
}
//将文件的每一行都与规则匹配
List
<
String
>
strings
=
Files
.
readAllLines
(
path1
);
for
(
int
i
=
0
;
i
<
strings
.
size
();
i
++)
{
valiWarn
(
rules
,
path1
,
strings
.
get
(
i
),
i
+
1
);
}
}
catch
(
IOException
e
)
{
log
.
error
(
"解析{}出错,异常信息为{}"
,
path1
.
toAbsolutePath
().
toString
(),
e
.
getMessage
());
log
.
error
(
"解析{}出错,异常信息为{}"
,
path1
.
toAbsolutePath
().
toString
(),
e
.
getMessage
());
}
}
}
...
...
@@ -416,9 +429,7 @@ public class Inspector {
dependency
.
setSupport
(
1
);
}
else
{
int
i
=
valiWarn
(
ruleList
,
path
,
stringBuilder
.
toString
(),
0
);
if
(
i
==
0
)
{
dependency
.
setSupport
(
2
);
}
dependency
.
setSupport
(
i
);
}
stringBuilder
.
delete
(
0
,
stringBuilder
.
length
());
}
...
...
@@ -434,11 +445,11 @@ public class Inspector {
* @return 1:正常、2:不支持依赖
*/
public
int
valiWarn
(
List
<
Rule
>
rules
,
Path
path
,
String
data
,
int
num
)
{
//
a为1代表当前依赖没有问题
int
a
=
1
;
//
默认未知依赖
int
a
=
3
;
for
(
Rule
rule
:
rules
)
{
//规则目标字符串为null 或者 空时
if
(
rule
.
getTarget
()
==
null
||
rule
.
getTarget
().
isEmpty
())
{
if
(
rule
.
getTarget
()
==
null
||
rule
.
getTarget
().
isEmpty
())
{
continue
;
}
//匹配字符串
...
...
@@ -446,17 +457,20 @@ public class Inspector {
//当index>0时代表data中有当前规则
if
(
index
>
0
)
{
//判断当前规则是否是不支持规则
if
(
rule
.
getTechnologyId
().
equals
(
techNotCnSupport
.
getId
()))
{
//如果是不支持规则则需要保存匹配信息
Warn
warn
=
new
Warn
(
);
warn
.
setFilePath
(
path
.
toAbsolutePath
().
toString
()
);
warn
.
setLineNum
(
num
);
warn
.
setTechnologyId
(
rule
.
getTechnologyId
());
warn
.
setRuleId
(
rule
.
get
Id
());
warn
.
setRule
(
rule
.
getTarget
());
Warn
warn
=
new
Warn
();
//如果是不支持规则则需要保存匹配信息
warn
.
setFilePath
(
path
.
toAbsolutePath
().
toString
()
);
warn
.
setLineNum
(
num
);
warn
.
setRuleId
(
rule
.
getId
()
);
warn
.
setRule
(
rule
.
getTarget
());
warn
.
setTechnologyId
(
rule
.
getTechnology
Id
());
if
(
technologyHashMap
.
get
(
rule
.
getTechnologyId
()).
getSupport
()
==
2
)
{
warns
.
add
(
warn
);
//设置a=0代表当前依赖有问题
a
=
0
;
a
=
2
;
}
else
if
(
technologyHashMap
.
get
(
rule
.
getTechnologyId
()).
getSupport
()
==
3
)
{
warns
.
add
(
warn
);
a
=
3
;
}
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论