Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何摆脱;错误4“;运行Makefile时_Makefile - Fatal编程技术网

如何摆脱;错误4“;运行Makefile时

如何摆脱;错误4“;运行Makefile时,makefile,Makefile,我有一个运行良好的Makefile: $ cat Makefile PMD := ~/pmd-bin-6.31.0/bin/run.sh pmd gen_quality_analysis: $(PMD) -d MyCode/ -R rulesets/java/quickstart.xml -f text > quality_analysis/report.txt $ 我的问题是我从Makefile中得到了一个错误4 $ LANG=en make gen_quality_anal

我有一个运行良好的Makefile:

$ cat Makefile
PMD := ~/pmd-bin-6.31.0/bin/run.sh pmd

gen_quality_analysis:
    $(PMD) -d MyCode/ -R rulesets/java/quickstart.xml -f text > quality_analysis/report.txt
$
我的问题是我从Makefile中得到了一个
错误4

$ LANG=en make gen_quality_analysis 
~/pmd-bin-6.31.0/bin/run.sh pmd -d AtlasPOC2/ -R rulesets/java/quickstart.xml -f text > quality_analysis/report.txt
Feb 14, 2021 9:53:35 AM net.sourceforge.pmd.PMD encourageToUseIncrementalAnalysis
WARNING: This analysis could be faster, please consider using Incremental Analysis: https://pmd.github.io/pmd-6.31.0/pmd_userdocs_incremental_analysis.html
make: *** [Makefile:15: gen_quality_analysis] Error 4
$ 
我怎样才能骑上它

make: *** [Makefile:15: gen_quality_analysis] Error 4
线路


注意:尽管我得到了这个错误4,但工作正常,我得到了预期的
report.txt

优先顺序:

  • 修复程序
    ~/pmd-bin-6.31.0/bin/run.sh pmd
    以在成功时返回0

  • 编写将退出状态从4更改为0的包装:

    $(PMD) -d ...;\
    status=$$?;\
    [ $$status -eq 4 ] && status=0;\
    exit $$status
    
  • 使用
    忽略该目标的错误。忽略:gen\u quality\u analysis

  • 使用
    make-i
    运行make,忽略所有错误


  • 按优先顺序:

  • 修复程序
    ~/pmd-bin-6.31.0/bin/run.sh pmd
    以在成功时返回0

  • 编写将退出状态从4更改为0的包装:

    $(PMD) -d ...;\
    status=$$?;\
    [ $$status -eq 4 ] && status=0;\
    exit $$status
    
  • 使用
    忽略该目标的错误。忽略:gen\u quality\u analysis

  • 使用
    make-i
    运行make,忽略所有错误


  • 从pmd的帮助文档中,当发现冲突时,返回代码为4,这是意料之中的。


    如果您希望返回代码为0(即使发现冲突),请添加“-failOnViolation false”。

    来自pmd的帮助文档-当发现冲突时,返回代码为4,这是预期的。


    如果您希望返回代码为0,即使发现了冲突,也可以添加“-failOnViolation false”。

    要添加到Allan的答案中,请执行以下操作:make调用shell来运行配方中的脚本。我不知道那个外壳到底在做什么。make知道shell运行的命令是否成功的唯一方法是检查它调用的shell的退出代码。通常情况下,退出代码0表示“成功”,任何其他值都表示失败。因此,来自make的这条消息意味着它调用的shell已完成,退出代码为4,而不是0,make假设这意味着命令失败。要添加到Allan的回答中,make将调用一个shell来运行配方中的脚本。我不知道那个外壳到底在做什么。make知道shell运行的命令是否成功的唯一方法是检查它调用的shell的退出代码。通常情况下,退出代码0表示“成功”,任何其他值都表示失败。因此,make的这条消息意味着它调用的shell已完成,退出代码为4,而不是0,make假设这意味着命令失败;当然,我不会把它排在第二位。还有其他选项:(A)在命令行前面加上
    -
    ,以便make忽略失败;(B)向配方中添加额外的操作,如
    |true
    ,以忽略错误代码。我想说这两个都比你的#3或#4好,因为它们只影响配方中的一个特定命令行;当然,我不会把它排在第二位。还有其他选项:(A)在命令行前面加上
    -
    ,以便make忽略失败;(B)向配方中添加额外的操作,如
    |true
    ,以忽略错误代码。我想说这两种方法都比你的#3或#4好,因为它们只影响配方中的一个特定命令行。