【问题标题】:CMD exiting with code 4 in Azure devops Command line taskCMD 在 Azure devops 命令行任务中以代码 4 退出
【发布时间】:2020-08-19 15:11:59
【问题描述】:

我有一个在 Azure DevOps 管道的 Windows 映像中运行的命令行任务。 执行 pmd.bat 命令后执行此任务并退出代码 4。因为这在我的本地 CMD 中运行得非常好。

 task: CmdLine@2
  inputs:
   script:  |
       echo starting  execution
       cd $(Build.SourcesDirectory)
       xcopy *.jar $(Build.SourcesDirectory)\code\
       cd $(Build.SourcesDirectory)\pmd-bin-6.24.0\bin
       pmd.bat -d "$(Build.SourcesDirectory)\code\src\apexcode.cls" -f xml -R "$(Build.SourcesDirectory)\code\build\MyApexRule.xml" -reportfile pmd.xml

谁能帮我解决这个问题?

【问题讨论】:

    标签: cmd azure-devops pmd


    【解决方案1】:

    在 PMD 中以代码 4 退出表明已检测到至少一项违规行为。

    这里有两个解决方案可以使命令正常工作:

    1. 您可以将参数<failurePriority> 设置为1(其默认值为5),以便将所有违规行为视为警告并显示在构建输出中。然后你就可以看到命令出错的地方了。

    2. 您可以将参数<failOnViolation>设置为false(其默认值为true),这样即使验证检查失败,命令也不会失败。与解决方案 1 的唯一区别是不显示警告消息。

    您可以在POM文件中设置参数:

    <build>
     <plugins>
      <plugin>
        <failurePriority>1</failurePriority>
        <failOnViolation>false</failOnViolation>
      </plugin>
     </plugins>
    </build>
    

    或将它们设置为 pmd.bat 内联脚本的属性。

    【讨论】:

    • 不,问题似乎不是 xcopy 错误,因为我可以在日志中看到,xcopy 步骤工作正常并且文件被正确复制。
    • 开始执行 D:apexcustom-rule-1.0.0-SNAPSHOT.jar 1 文件已复制成功处理8个文件;处理 0 个文件失败 D:\a\1\s\code\build\ D:\a\1\s\pmd-bin-6.24.0\bin\.. D:\a\1\s 2020 年 8 月 17 日上午 6:10:15 net.sourceforge.pmd.PMD browseToUseIncrementalAnalysis 警告:此分析可能会更快,请考虑使用增量分析:pmd.github.io/pmd-6.24.0/pmd_userdocs_incremental_analysis.html##[error]Cmd.exe 以代码“4”退出。整理:CmdLine
    • @priya 在没有错误信息的情况下退出是很奇怪的。你有没有试过在没有pmd.pat 命令的情况下运行任务?
    • 任务的目的是执行 pmd.bat 并生成报告文件......这在我的本地工作正常......所以 bat 文件没有问题......我无法理解为什么它退出并失败了任务
    • @priya 在 PMD 中退出代码 4 表明至少检测到一个违规行为。您可以将参数 &lt;failurePriority&gt; 设置为 1(其默认值为 5),这样所有的违规行为都将被视为警告并显示在构建输出中。然后你就可以看到命令出错的地方了。
    【解决方案2】:

    正如 Jane Ma-MSFT 正确解释的那样,退出代码 4 表示检测到一些违规行为并且构建失败。

    有关文档,请参阅 https://pmd.github.io/latest/pmd_userdocs_cli_reference.html#exit-status

    4:已检测到至少一个违规行为,除非设置了 -failOnViolation false。

    如果您不希望构建失败并且只想生成报告,则可以调整脚本以添加 -failOnVioltation false

    指定如果发现违规,PMD 是否以非零状态退出。默认情况下,如果发现违规,PMD 会以状态 4 退出。使用-failOnViolation false 禁用此功能,改为使用 0 退出并仅输出报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2023-03-27
      • 2015-10-12
      相关资源
      最近更新 更多