我想使用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)
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...)
有多个选项可以将参数传递给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。该示例也这样做。
exec.Command