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