【问题标题】:How to use CSSLint?如何使用 CSSLint?
【发布时间】:2016-11-13 02:49:33
【问题描述】:

我发现一些命令行参数可以运行生成 xml 格式的 CSSLint 报告。通过命令提示符运行时它工作正常。

参数:

csslint --format=csslint-xml "{SourceDir}\bootstrap.css" > "C:\temp\csslint.xml"

我想通过 C# 应用程序执行它。我尝试了以下代码。

Process process = new Process()
{
    StartInfo =
    {
        FileName = "cmd.exe",
        Arguments = "csslint --format=csslint-xml " + @"""{SourceDir}\bootstrap.css""" + @" > ""C:\Temp\CssLint.xml""",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true,
    }
};

process.Start();
process.WaitForExit();

但它不起作用。我可以为这个问题提供解决方案或想法吗?

还有什么方法可以为指定目录生成 CSSLint 报告吗?我想给出目录路径而不是文件名。

【问题讨论】:

    标签: c# jenkins command-line csslint


    【解决方案1】:

    您需要将/K/C添加到cmd以执行作为参数传递的进程,因此:

    Arguments = "/C csslint --format=csslint-xml " + @"""{SourceDir}\bootstrap.css""" + @" > ""C:\Temp\CssLint.xml""",
    

    来自the documentation

    选项

    /C 运行命令然后终止

    /K 运行命令,然后返回到 CMD 提示符。 这对于测试、检查变量很有用

    一个警告...管道(命令行的> "C:\temp\csslint.xml" 部分)不是参数,而是重定向。

    如果您要从您的应用程序重定向您的标准输出(RedirectStandardOutput = true),您可以直接从 C# 捕获它,无需像您尝试做的那样将其通过管道传输到文件:您需要处理 @ StartWaitForExit 调用之间的 987654322@ 事件,或从 Process.StandardOutput 流中读取)。

    关于第二个问题,csslint CLI 允许传入目录而不是文件

    【讨论】:

    • 我尝试了此快照中给出的参数drive.google.com/open?id=0B2pWtJvbMi5AZEFoaXhxZGxoaXc您的回答不符合我的要求。我不确定我们是否可以将 cmd.exe 作为文件名。你最后检查了你的答案吗? csslint 也不是可执行文件。这只是一个论点。
    • 当然不是你的具体设置,但我已经多次从 C# 运行 cmd.exe
    • 我也跑了很多次。但仅上面给出的论点不起作用。
    • 我绝对无法让您的设置来查看发生了什么,您需要自己进行实验。首先,将管道从参数中提取到文件:正如我在回答中所解释的那样,这些将不起作用(这些不是您进程的“参数”,这会使 shell 重定向您的标准输出)。然后检查您是否在进程的标准输出中接收到任何数据(通过事件或StandardOutput 属性)
    猜你喜欢
    • 2012-10-25
    • 2015-01-12
    • 2015-02-17
    • 2016-11-03
    • 1970-01-01
    • 2011-10-10
    • 2019-06-09
    • 1970-01-01
    • 2014-12-06
    相关资源
    最近更新 更多