Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
Coca
提交
12ad93ea
C
Coca
项目概览
Phodal
/
Coca
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coca
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
12ad93ea
编写于
12月 30, 2019
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: add dirty fix for creator
上级
bed0dcd8
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
63 addition
and
36 deletion
+63
-36
core/adapter/call/java_call_app_test.go
core/adapter/call/java_call_app_test.go
+9
-10
core/adapter/call/java_call_listener.go
core/adapter/call/java_call_listener.go
+50
-24
core/adapter/call/java_call_listener_test.go
core/adapter/call/java_call_listener_test.go
+1
-0
core/models/jclass_node.go
core/models/jclass_node.go
+2
-2
core/models/jmethod.go
core/models/jmethod.go
+1
-0
未找到文件。
core/adapter/call/java_call_app_test.go
浏览文件 @
12ad93ea
...
...
@@ -94,16 +94,15 @@ func TestAnnotation(t *testing.T) {
callNodes
:=
getCallNodes
(
codePath
)
fmt
.
Println
(
callNodes
)
//methodMap := make(map[string]models.JMethod)
//for _, c := range callNodes[0].Methods {
// methodMap[c.Name] = c
//}
//g.Expect(methodMap["macOsXPositiveTest"].Name).To(Equal("macOsXPositiveTest"))
//
//for _, call := range methodMap["macOsXPositiveTest"].MethodCalls {
// fmt.Println(call.Class)
//}
methodMap
:=
make
(
map
[
string
]
models
.
JMethod
)
for
_
,
c
:=
range
callNodes
[
0
]
.
Methods
{
methodMap
[
c
.
Name
]
=
c
}
g
.
Expect
(
methodMap
[
"macOsXPositiveTest"
]
.
Name
)
.
To
(
Equal
(
"macOsXPositiveTest"
))
for
_
,
call
:=
range
methodMap
[
"macOsXPositiveTest"
]
.
MethodCalls
{
fmt
.
Println
(
call
.
Class
)
}
g
.
Expect
(
true
)
.
To
(
Equal
(
true
))
}
\ No newline at end of file
core/adapter/call/java_call_listener.go
浏览文件 @
12ad93ea
...
...
@@ -31,8 +31,13 @@ var classQueue []string
var
identMap
map
[
string
]
models
.
JIdentifier
var
isOverrideMethod
=
false
var
currentNode
models
.
JClassNode
var
classNodeQueue
[]
models
.
JClassNode
var
currentClassForQueue
models
.
JClassNode
var
currentNode
*
models
.
JClassNode
var
classNodes
[]
models
.
JClassNode
var
creatorNodes
[]
models
.
JClassNode
var
currentCreatorNode
models
.
JClassNode
var
fileName
=
""
var
hasEnterClass
=
false
...
...
@@ -90,9 +95,22 @@ func (s *JavaCallListener) exitBody() {
currentNode
.
Fields
=
fields
currentNode
.
Type
=
currentType
currentNode
.
Methods
=
methodsArray
currentNode
.
Path
=
fileName
classNodes
=
append
(
classNodes
,
currentNode
)
}
if
currentType
==
"Creator"
{
currentCreatorNode
.
Methods
=
append
(
currentCreatorNode
.
Methods
,
currentNode
.
Methods
...
)
var
methodsArray
[]
models
.
JMethod
for
_
,
value
:=
range
methodMap
{
methodsArray
=
append
(
methodsArray
,
value
)
}
currentNode
.
Methods
=
append
(
currentNode
.
Methods
,
methodsArray
...
)
return
}
classNodes
=
append
(
classNodes
,
*
currentNode
)
currentNode
=
models
.
NewClassNode
()
initClass
()
}
...
...
@@ -308,6 +326,7 @@ func buildMethodParameters(parameters parser.IFormalParametersContext, method *m
}
method
.
Parameters
=
methodParams
updateMethod
(
method
)
}
return
false
}
...
...
@@ -365,38 +384,45 @@ func getMethodMapName(method models.JMethod) string {
func
(
s
*
JavaCallListener
)
EnterCreator
(
ctx
*
parser
.
CreatorContext
)
{
variableName
:=
ctx
.
GetParent
()
.
GetParent
()
.
GetChild
(
0
)
.
(
antlr
.
ParseTree
)
.
GetText
()
allIdentifiers
:=
ctx
.
CreatedName
()
.
(
*
parser
.
CreatedNameContext
)
.
AllIDENTIFIER
()
//currentType = "Creator"
for
_
,
identifier
:=
range
allIdentifiers
{
createdName
:=
identifier
.
GetText
()
localVars
[
variableName
]
=
createdName
if
currentMethod
.
Name
==
""
{
return
currentType
=
"Creator"
classNodeQueue
=
append
(
classNodeQueue
,
*
currentNode
)
buildCreatedCall
(
createdName
,
ctx
)
text
:=
ctx
.
CreatedName
()
.
GetText
()
creatorNode
:=
&
models
.
JClassNode
{
Package
:
currentPkg
,
Class
:
text
,
Type
:
"Creator"
,
Path
:
""
,
Fields
:
nil
,
Methods
:
nil
,
MethodCalls
:
nil
,
Extend
:
""
,
Implements
:
nil
,
Annotations
:
nil
,
}
buildCreatedCall
(
createdName
,
ctx
)
currentCreatorNode
=
*
creatorNode
creatorNodes
=
append
(
creatorNodes
,
*
creatorNode
)
}
}
//func (s *JavaCallListener) ExitCreator(ctx *parser.CreatorContext) {
// text := ctx.CreatedName().GetText()
// creatorNode := &models.JClassNode{
// Package: currentPkg,
// Class: text,
// Type: "Creator",
// Path: "",
// Fields: nil,
// Methods: nil,
// MethodCalls: nil,
// Extend: "",
// Implements: nil,
// Annotations: nil,
// }
//
// classNodes = append(classNodes, *creatorNode)
// //currentNode = *creatorNode
//}
func
(
s
*
JavaCallListener
)
ExitCreator
(
ctx
*
parser
.
CreatorContext
)
{
currentType
=
""
currentCreatorNode
=
*
models
.
NewClassNode
()
if
classNodeQueue
==
nil
||
len
(
classNodeQueue
)
<=
1
{
return
}
classNodeQueue
=
classNodeQueue
[
0
:
len
(
classNodeQueue
)
-
1
]
currentClassForQueue
=
classNodeQueue
[
len
(
classNodeQueue
)
-
1
]
}
func
buildCreatedCall
(
createdName
string
,
ctx
*
parser
.
CreatorContext
)
{
method
:=
methodMap
[
getMethodMapName
(
currentMethod
)]
...
...
core/adapter/call/java_call_listener_test.go
0 → 100644
浏览文件 @
12ad93ea
package
call
core/models/jclass_node.go
浏览文件 @
12ad93ea
...
...
@@ -18,6 +18,6 @@ type JAppField struct {
Value
string
}
func
NewClassNode
()
JClassNode
{
return
*
&
JClassNode
{
""
,
""
,
""
,
""
,
nil
,
nil
,
nil
,
""
,
nil
,
nil
}
func
NewClassNode
()
*
JClassNode
{
return
&
JClassNode
{
""
,
""
,
""
,
""
,
nil
,
nil
,
nil
,
""
,
nil
,
nil
}
}
core/models/jmethod.go
浏览文件 @
12ad93ea
...
...
@@ -14,6 +14,7 @@ type JMethod struct {
IsConstructor
bool
IsReturnNull
bool
Modifiers
[]
string
Creators
[]
JClassNode
}
type
Annotation
struct
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录