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