在Windows上使用exec.Command进行Noverify
我想使用VKCOM /
noverify来分析代码。使用此命令从命令行(Windows dos
shell)调用它
noverify.exe -exclude-checks arraySyntax,phpdocLint -output result.txt
C:\Dev\PHP\ResourceSpace_9_0_13357\include
问题是我无法将参数传递给 cmnd := exec.Command("noverify.exe", args)
options := " -exclude-checks arraySyntax, PHPDoc"pathToCode := "C:\\Dev\\PHP\\ResourceSpace_9_0_13357\\include"
// this works
cmnd := exec.Command("noverify.exe", pathToCode)
args := []string{options, pathToCode}
arg := strings.Join(args, "")
// passing options does not work
// cmnd := exec.Command("noverify.exe", arg)
b, err := cmnd.CombinedOutput()
我尝试了什么
您可以在此摘要中找到我的源代码。,
尽管分隔符在上方为空,但似乎args是以字符串分隔的形式加入的。
问题
- 如何将多个参数传递给
exec.Comman("yourFoo.exe", cmdArgs...)
- 为什么我的尝试在Windows上不起作用?
回答:
有多个选项可以将参数传递给exec.Command:
您可以使用multible字符串作为参数:
cmd := exec.Command("your-command", "arg1", "arg2")
如果您有一部分参数,则可以使用传播运算符
args := []string{"-exclude-checks", "arraySyntax,phpdocLint", "-output", "result.txt", "your-path"}cmd := exec.Command("your-command", args...)
问题二:在您的代码中
options := " -exclude-checks arraySyntax, PHPDoc"pathToCode := "C:\\Dev\\PHP\\ResourceSpace_9_0_13357\\include"
args := []string{options, pathToCode}
您将两个选项传递给外部程序。如果您在命令行上写了相同的内容,则可以通过
your-command.exe " -exclude-checks arraySyntax, PHPDoc" "your-path"
这不起作用,也是您的程序不起作用的原因。
简而言之,无论您在命令中的哪个位置放置空格,都需要为设置一个单独的参数exec.Command
。该示例也这样做。
以上是 在Windows上使用exec.Command进行Noverify 的全部内容, 来源链接: utcz.com/qa/424792.html