未验证 提交 d5649cb5 编写于 作者: P Phodal HUANG

feat: add basic code for parse

上级 e61ce24b
package cmd
import (
. "../refactor"
"github.com/spf13/cobra"
)
var refactorCmd *cobra.Command = &cobra.Command{
Use: "refactor",
Short: "auto refactor code",
Long: ``,
Run: func(cmd *cobra.Command, args []string) {
moveConfig := cmd.Flag("move").Value.String()
path := cmd.Flag("path").Value.String()
if moveConfig != "" && path != "" {
app := NewMoveClassApp(moveConfig, path)
app.Analysis()
}
},
}
func init() {
rootCmd.AddCommand(refactorCmd)
refactorCmd.PersistentFlags().StringP("path", "p", "", "path")
refactorCmd.PersistentFlags().StringP("move", "m", "", "with config example -m config.files")
}
......@@ -28,6 +28,7 @@ func Execute() error {
func init() {
rootCmd.AddCommand(collCmd)
cobra.OnInitialize(initConfig)
rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)")
......
repositories.AggregateRootARepo -> gateways
gateways.FakeRouter -> repositories
......@@ -8,8 +8,8 @@ import (
"path/filepath"
"strings"
. "../../language/java"
. "./models"
. "../utils"
)
var currentFile string
......@@ -18,7 +18,7 @@ type JavaRefactorApp struct {
}
func (j *JavaRefactorApp) AnalysisPath(codeDir string) {
files := (*JavaRefactorApp)(nil).javaFiles(codeDir)
files := GetJavaFiles(codeDir)
for index := range files {
file := files[index]
......@@ -26,7 +26,7 @@ func (j *JavaRefactorApp) AnalysisPath(codeDir string) {
displayName := filepath.Base(file)
fmt.Println("Start parse java call: " + displayName)
parser := (*JavaRefactorApp)(nil).processFile(file)
parser := ProcessFile(file)
context := parser.CompilationUnit()
node := NewJFullIdentifier()
......@@ -93,22 +93,3 @@ func removeLine(path string, lineNumber int) {
array = append(array[:lineNumber], array[lineNumber+1:]...)
_ = ioutil.WriteFile(path, []byte(strings.Join(array, "\n")), mode)
}
func (j *JavaRefactorApp) javaFiles(codeDir string) []string {
files := make([]string, 0)
_ = filepath.Walk(codeDir, func(path string, fi os.FileInfo, err error) error {
if strings.HasSuffix(path, ".java") && !strings.Contains(path, "Test.java") {
files = append(files, path)
}
return nil
})
return files
}
func (j *JavaRefactorApp) processFile(path string) *JavaParser {
is, _ := antlr.NewFileStream(path)
lexer := NewJavaLexer(is)
stream := antlr.NewCommonTokenStream(lexer, 0);
parser := NewJavaParser(stream)
return parser
}
package refactor
import (
"bufio"
"fmt"
"github.com/antlr/antlr4/runtime/Go/antlr"
"log"
"os"
"path/filepath"
. "./base"
. "./base/models"
. "./utils"
)
var currentFile string
var moveConfig string
var path string
var nodes []JFullIdentifier
type MoveClassApp struct {
}
func NewMoveClassApp(config string, pPath string) *MoveClassApp {
moveConfig = config
path = pPath
return &MoveClassApp{}
}
func (j *MoveClassApp) Analysis() {
files := GetJavaFiles(path)
fmt.Println(path)
for index := range files {
file := files[index]
currentFile, _ = filepath.Abs(file)
displayName := filepath.Base(file)
fmt.Println("Start parse java call: " + displayName)
parser := ProcessFile(file)
context := parser.CompilationUnit()
node := NewJFullIdentifier()
listener := new(JavaRefactorListener)
listener.InitNode(node)
antlr.NewParseTreeWalker().Walk(listener, context)
nodes = append(nodes, *node)
}
parseRename()
}
func parseRename() {
file, err := os.Open(moveConfig)
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
moveClass(scanner.Text())
}
}
func moveClass(text string) {
}
package main
package refactor
import (
. "./base"
......
package utils
import (
"github.com/antlr/antlr4/runtime/Go/antlr"
"os"
"path/filepath"
"strings"
. "../../language/java"
)
func GetJavaFiles(codeDir string) []string {
files := make([]string, 0)
_ = filepath.Walk(codeDir, func(path string, fi os.FileInfo, err error) error {
if strings.HasSuffix(path, ".java") && !strings.Contains(path, "Test.java") {
files = append(files, path)
}
return nil
})
return files
}
func ProcessFile(path string) *JavaParser {
is, _ := antlr.NewFileStream(path)
lexer := NewJavaLexer(is)
stream := antlr.NewCommonTokenStream(lexer, 0);
parser := NewJavaParser(stream)
return parser
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册