diff --git a/cmd/bs.go b/cmd/bs.go index a52c0732011ac6110bfe0e8a25e31f9c88a00ee2..9eec8f59219d77658bf929386fa5ca7df3127816 100644 --- a/cmd/bs.go +++ b/cmd/bs.go @@ -30,20 +30,24 @@ var badsmellCmd = &cobra.Command{ ignoreRules := strings.Split(ignoreStr, ",") bsApp := *bs2.NewBadSmellApp() - bsList := bsApp.AnalysisPath(importPath, ignoreRules) + bsList := bsApp.AnalysisPath(importPath) bsModel, _ := json.MarshalIndent(bsList, "", "\t") + cmd_util.WriteToCocaFile("nodeInfos.json", string(bsModel)) + + filterBs := bsApp.FilterBadSmell(bsList, ignoreRules) + + filterBsModel, _ := json.MarshalIndent(filterBs, "", "\t") if sortType == "type" { - sortSmells := bs_domain.SortSmellByType(bsList, isSmellHaveSize) - bsModel, _ = json.MarshalIndent(sortSmells, "", "\t") + sortSmells := bs_domain.SortSmellByType(filterBs, isSmellHaveSize) + filterBsModel, _ = json.MarshalIndent(sortSmells, "", "\t") } - cmd_util.WriteToCocaFile("bs.json", string(bsModel)) + cmd_util.WriteToCocaFile("bs.json", string(filterBsModel)) }, } - func isSmellHaveSize(key string) bool { var smellList = []string{ "largeClass", diff --git a/core/context/bs/bad_smell_app.go b/core/context/bs/bad_smell_app.go index b8f8ca0af9548e69d0dfd7cf2840fe845eb82565..8f20340a551009b6b5ffac80c9c771ccf999b7a9 100644 --- a/core/context/bs/bad_smell_app.go +++ b/core/context/bs/bad_smell_app.go @@ -1,10 +1,8 @@ package bs import ( - "encoding/json" "fmt" "github.com/antlr/antlr4/runtime/Go/antlr" - "github.com/phodal/coca/cmd/cmd_util" "github.com/phodal/coca/core/adapter/coca_file" "github.com/phodal/coca/core/domain/bs_domain" "github.com/phodal/coca/core/infrastructure/ast/bs" @@ -20,7 +18,7 @@ func NewBadSmellApp() *BadSmellApp { return &BadSmellApp{} } -func (j *BadSmellApp) AnalysisPath(codeDir string, ignoreRules []string) []bs_domain.BadSmellModel { +func (j *BadSmellApp) AnalysisPath(codeDir string) *[]bs_domain.BsJClass { nodeInfos = nil files := coca_file.GetJavaFiles(codeDir) for index := range files { @@ -42,10 +40,11 @@ func (j *BadSmellApp) AnalysisPath(codeDir string, ignoreRules []string) []bs_do nodeInfos = append(nodeInfos, nodeInfo) } - bsModel, _ := json.MarshalIndent(nodeInfos, "", "\t") - cmd_util.WriteToCocaFile("nodeInfos.json", string(bsModel)) + return &nodeInfos +} - bsList := AnalysisBadSmell(nodeInfos) +func (j *BadSmellApp) FilterBadSmell(nodeInfos *[]bs_domain.BsJClass, ignoreRules []string) []bs_domain.BadSmellModel { + bsList := AnalysisBadSmell(*nodeInfos) mapIgnoreRules := make(map[string]bool) for _, ignore := range ignoreRules { diff --git a/core/context/bs/bad_smell_app_test.go b/core/context/bs/bad_smell_app_test.go index a48cab8595d12b6d9efa4ad16b8ee938ecb92441..8b508f5efc16e6d338c093a4f897594421db1515 100644 --- a/core/context/bs/bad_smell_app_test.go +++ b/core/context/bs/bad_smell_app_test.go @@ -13,7 +13,8 @@ func TestBadSmellApp_AnalysisPath(t *testing.T) { codePath := "../../../_fixtures/bs" codePath = filepath.FromSlash(codePath) - bsList := bsApp.AnalysisPath(codePath, nil) + bs := bsApp.AnalysisPath(codePath) + bsList := bsApp.FilterBadSmell(bs, nil) g.Expect(len(bsList)).To(Equal(4)) g.Expect(bsList[0].Bs).To(Equal("complexCondition"))