【问题标题】:arc lint command fails with error #1arc lint 命令失败并出现错误 #1
【发布时间】:2016-07-12 14:33:07
【问题描述】:

我已通过在 .arclint 文件中定义 linter 将 arc lint 配置为使用 pylint

{
  "linters": {
    "pylint": {
      "type": "pylint",
      "include": "(\\.py$)"
    }
  }
}

在任何*.py 上执行arc lint 命令后,我得到下一个异常:

[2016-07-12 14:18:10] EXCEPTION: (PhutilAggregateException) Some linters failed:
- CommandException: Command failed with error #1!
  COMMAND
  'pylint' '--reports=no' '--msg-template={line}|{column}|{msg_id}|{symbol}|{msg}' '/Users/aivaneyko/Projects/raw/module/file.py'

  STDOUT
  ************* Module module.file


  STDERR
  Traceback (most recent call last):
    File "/Users/aivaneyko/Projects/raw/env/bin/pylint", line 11, in <module>
      sys.exit(run_pylint())
    File "/Users/aivaneyko/Projects/raw/env/lib/python2.7/site-packages/pylint/__init__.py", line 23, in run_pylint
      Run(sys.argv[1:])
    File "/Users/aivaneyko/Projects/raw/env/lib/python2.7/site-packages/pylint/lint.py", line 1315, in __init__
      linter.check(args)
    File "/Users/aivaneyko/Projects/raw/env/lib/python2.7/site-packages/pylint/lint.py", line 736, in check
      self._do_check(files_or_modules)
    File "/Users/aivaneyko/Projects/raw/env/lib/python2.7/site-packages/pylint/lint.py", line 867, in _do_check
      self.check_astroid_module(ast_node, walker, rawcheckers, tokencheckers)
    File "/Users/aivaneyko/Projects/raw/env/lib/python2.7/site-packages/pylint/lint.py", line 947, in check_astroid_module
      walker.walk(ast_node)
    File "/Users/aivaneyko/Projects/raw/env/lib/python2.7/site-packages/pylint/utils.py", line 938, in walk
      self.wa... (1,689 more bytes) ... at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:274]
arcanist(head=master, ref.master=4d4d16f25985), phutil(head=master, ref.master=32c56dc20b39)
  #0 <#2> ExecFuture::resolvex() called at [<arcanist>/src/lint/linter/ArcanistExternalLinter.php:448]
  #1 <#2> ArcanistExternalLinter::resolveFuture(string, ExecFuture) called at [<arcanist>/src/lint/linter/ArcanistFutureLinter.php:34]
  #2 <#2> ArcanistFutureLinter::didLintPaths(array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:594]
  #3 <#2> ArcanistLintEngine::executeDidLintOnPaths(ArcanistPyLintLinter, array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:545]
  #4 <#2> ArcanistLintEngine::executeLintersOnChunk(array, array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:473]
  #5 <#2> ArcanistLintEngine::executeLinters(array) called at [<arcanist>/src/lint/engine/ArcanistLintEngine.php:216]
  #6 ArcanistLintEngine::run() called at [<arcanist>/src/workflow/ArcanistLintWorkflow.php:334]
  #7 ArcanistLintWorkflow::run() called at [<arcanist>/scripts/arcanist.php:394]

我的arc --version 输出:

奥术师 4d4d16f25985f133501f20fdddd183e525f00341(2016 年 6 月 28 日)

libphutil 32c56dc20b39cffd0cfef931f6f4ab9c99f12677(2016 年 7 月 7 日)

我的pylint --version 输出:

pylint 1.5.6,astroid 1.4.7 Python 2.7.10(默认,2015 年 10 月 23 日, 19:19:21) [GCC 4.2.1 兼容 Apple LLVM 7.0.0 (clang-700.0.59.5)]

我在 PHP 5.5.34 遇到异常,升级到 PHP 5.6.23 后问题仍然存在。我也尝试安装其他版本的奥术师但没有成功 - arcanist 57f6fb59d73994d90cd94143787424ce0fdbf73b (25 Jan 2016)libphutil f43291e99d36045bc459e5133454c0d8fd8768ea (21 Jan 2016)

操作系统:El Capitan 10.11.5

【问题讨论】:

  • 您是否尝试在控制台中手动运行 pylint 命令?我已经尝试了 arc lint --everything 与您提供的 .arclint 文件,它工作得很好。我有 Pylint 1.6.1 版
  • @KostyaShkryob 是的,我试过了,效果很好。另外,我试过 pylint 1.6.1 没有成功。

标签: php python pylint phabricator arcanist


【解决方案1】:

就我而言,问题与ValueError: unknown locale: UTF-8 有关。

如果您在 MacOS 上遇到同样的错误,这里是快速修复(在 bash 中导出):

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

如何解决:

请使用“test.php”脚本重现问题(提供文件路径而不是“path-to-file/file”):

<?php
$descriptorspec = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("file", "error_output.txt", "a")
);
$process = proc_open('"pylint" "--reports=no" "--msg-template={line}|{column}|{msg_id}|{symbol}|{msg}"   "path-to-file/file"', $descriptorspec, $pipes);
if (is_resource($process)) {
    fclose($pipes[0]);
    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    $return_value = proc_close($process);
    echo "command returned $return_value\n";
}
?>

您可以检查“error_output.txt”文件中是否存在错误。

祝你好运! :)

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2022-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多