clang-tidy parser and executor #26
|  | @ -1,65 +0,0 @@ | |||
| package clang_tidy | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"os/exec" | ||||
| 
 | ||||
| 	"focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/internal/stage" | ||||
| 	"github.com/criyle/go-judge/envexec" | ||||
| ) | ||||
| 
 | ||||
| type ClangTidy struct{} | ||||
| 
 | ||||
| func (e *ClangTidy) Run(cmds []stage.Cmd) ([]stage.ExecutorResult, error) { | ||||
| 	var res []stage.ExecutorResult | ||||
| 
 | ||||
| 	for _, cmd := range cmds { | ||||
| 		args := "" | ||||
| 		for _, arg := range cmd.Args { | ||||
| 			args += fmt.Sprint(arg) | ||||
| 			args += " " | ||||
| 		} | ||||
| 		clang_tidy_Cmd := exec.Command("bash", "-c", args) | ||||
| 		clang_tidy_stdout, err1 := clang_tidy_Cmd.StdoutPipe() | ||||
| 		clang_tidy_stderr, err2 := clang_tidy_Cmd.StderrPipe() | ||||
| 		if err1 != nil { | ||||
| 			return nil, err1 | ||||
| 		} | ||||
| 		if err2 != nil { | ||||
| 			return nil, err2 | ||||
| 		} | ||||
| 		_ = clang_tidy_Cmd.Start() | ||||
| 		clang_tidy_Out, err1 := io.ReadAll(clang_tidy_stdout) | ||||
| 		clang_tidy_Err, err2 := io.ReadAll(clang_tidy_stderr) | ||||
| 
 | ||||
| 		if err1 != nil { | ||||
| 			return nil, err1 | ||||
| 		} | ||||
| 		if err2 != nil { | ||||
| 			return nil, err2 | ||||
| 		} | ||||
| 
 | ||||
| 		_ = clang_tidy_Cmd.Wait() | ||||
| 
 | ||||
| 		r := stage.ExecutorResult{ | ||||
| 			Status:     stage.Status(envexec.StatusAccepted), | ||||
| 			ExitStatus: 0, | ||||
| 			Error:      "", | ||||
| 			Time:       0, | ||||
| 			Memory:     0, | ||||
| 			RunTime:    0, | ||||
| 			Files:      map[string]string{}, | ||||
| 			FileIDs:    map[string]string{}, | ||||
| 		} | ||||
| 		r.Files["stdout"] = string(clang_tidy_Out) | ||||
| 		// TODO: We may don't want stderr
 | ||||
| 		r.Files["stderr"] = string(clang_tidy_Err) | ||||
| 		res = append(res, r) | ||||
| 	} | ||||
| 	return res, nil | ||||
| } | ||||
| 
 | ||||
| func (e *ClangTidy) Cleanup() error { | ||||
| 	return nil | ||||
| } | ||||
|  | @ -1,9 +0,0 @@ | |||
| package clang_tidy | ||||
| 
 | ||||
| import "focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/internal/stage" | ||||
| 
 | ||||
| var name = "clang-tidy" | ||||
| 
 | ||||
| func init() { | ||||
| 	stage.RegisterExecutor(name, &ClangTidy{}) | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user