From 52cd7d959cdb06ea0ef014394e618d4c35ebfeb4 Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Wed, 18 Dec 2019 21:07:44 +0800 Subject: [PATCH] feat: add basic modifier to bs --- core/adapter/bs/BadSmellListener.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/core/adapter/bs/BadSmellListener.go b/core/adapter/bs/BadSmellListener.go index ee36f3b..4b83107 100644 --- a/core/adapter/bs/BadSmellListener.go +++ b/core/adapter/bs/BadSmellListener.go @@ -108,7 +108,7 @@ func (s *BadSmellListener) EnterInterfaceMethodDeclaration(ctx *InterfaceMethodD methodModifierLen := len(allModifier) for index, modifier := range allModifier { modifiers = modifiers + modifier.GetText() - if index < methodModifierLen - 1 { + if index < methodModifierLen-1 { modifiers = modifiers + "," } } @@ -174,7 +174,8 @@ func (s *BadSmellListener) EnterMethodDeclaration(ctx *MethodDeclarationContext) stopLine := ctx.GetStop().GetLine() name := ctx.IDENTIFIER().GetText() stopLinePosition := startLinePosition + len(name) - //XXX: find the start position of {, not public + + modifier := getModifier(ctx) typeType := ctx.TypeTypeOrVoid().GetText() methodBody := ctx.MethodBody().GetText() @@ -207,12 +208,28 @@ func (s *BadSmellListener) EnterMethodDeclaration(ctx *MethodDeclarationContext) StopLine: stopLine, StopLinePosition: stopLinePosition, MethodBody: methodBody, + Modifier: modifier, Parameters: methodParams, MethodBs: methodBadSmellInfo, } methods = append(methods, *method) } +func getModifier(ctx *MethodDeclarationContext) string { + var modifier = "" + if reflect.TypeOf(ctx.GetParent()).String() == "*parser.MemberDeclarationContext" { + firstChild := ctx.GetParent().(*MemberDeclarationContext).GetParent().GetChild(0) + if reflect.TypeOf(firstChild).String() == "*parser.ModifierContext" { + modifierCtx := firstChild.(*ModifierContext) + if reflect.TypeOf(modifierCtx.GetChild(0)).String() == "*parser.ClassOrInterfaceModifierContext" { + context := modifierCtx.GetChild(0).(*ClassOrInterfaceModifierContext) + modifier = context.GetText() + } + } + } + return modifier +} + func buildMethodBSInfo(context *MethodDeclarationContext, bsInfo models2.MethodBadSmellInfo) models2.MethodBadSmellInfo { methodBody := context.MethodBody() blockContext := methodBody.GetChild(0) -- GitLab