在Azure devops命令行任务中以代码4退出CMD

问题描述

我有一个在Azure DevOps管道的Windows映像中运行的命令行任务。 执行pmd.bat命令并以代码4退出后,此任务完成。在我的本地CMD中,此命令运行得很好。

<!-- Start Box -->
<div class ="Box" aria-label="do you ever">

   <svg class ="text-Box" height="5.59vh" width="15.54vw" viewBox="0 0 172 45">
      <text font-family="Heebo-Light" font-size="24px" fill="#595959" fill-opacity="1" x="50%" y="53%" dominant-baseline="middle" text-anchor="middle">
         <tspan>do you ever</tspan>
      </text>
   </svg>

   <svg class ="rect-Box" height="5.59vh" width="15.54vw" viewBox="0 0 272 45" preserveAspectRatio="none">
      <defs>
         <linearGradient gradientTransform="rotate(90,0.5,0.5)" id="uniqueDomId-1114">
            <stop offset="0%" stop-color="#AFAFAF" stop-opacity="1"></stop>
            <stop offset="0%" stop-color="#F5F3F8" stop-opacity="1"></stop>
            <stop offset="69.804%" stop-color="#F9F9F9" stop-opacity="1"></stop>
            <stop offset="100%" stop-color="#FFFFFF" stop-opacity="1"></stop>
         </linearGradient>
         <filter id="uniqueDomId-1115" filterUnits="userSpaceOnUse" x="-15.75" y="-15.75" width="303.5" height="76.5">
            <feFlood result="floodout" flood-color="#CCC1DA" flood-opacity="0.29"></feFlood>
            <feGaussianBlur result="gaussOut" in="SourceAlpha" stdDeviation="2.450000047683716,2.450000047683716">
            </feGaussianBlur>
            <feComposite in="floodout" in2="gaussOut" operator="in"></feComposite>
         </filter>
      </defs>
      <use transform="translate(-2.72,-0.45) scale(1.0199999809265137,1.0199999809265137) translate(0,0)" xlink:href="#uniqueDomId-1116" filter="url(#uniqueDomId-1115)" data-angle="0" data-distance="0" data-height="45" data-scale="1.02" data-adornment-type="drop-shadow" data-width="272" data-transform="[{&quot;type&quot;:&quot;translate&quot;,&quot;args&quot;:[-2.72,-0.45]},{&quot;type&quot;:&quot;scale&quot;,&quot;args&quot;:[1.0199999809265137,1.0199999809265137]}]"></use>
      <g id="uniqueDomId-1116">
         <g id="uniqueDomId-1117">
            <path d="M0,0L272,0 272,45 0,45z" id="uniqueDomId-1118" fill="url(#uniqueDomId-1114)"></path>
         </g>
      </g>
   </svg>

</div>
<!-- End Box -->

有人可以帮助我解决什么问题吗?

解决方法

在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内联脚本的属性。

,

正如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退出并仅输出报告。