我有
find . -iname "*.py" -exec pylint -E {} ;\
和
FILES=$(find . -iname "*.py")
pylint -E $FILES
如果我理解正确,第一个命令将为每个Python文件运行pylint,第二个命令将为所有文件运行pylint一次。我希望两个命令都会返回相同的输出,但它们会返回不同的结果。我认为这种差异与导入和F(失败)pylint消息有某种关系,这种情况在导入失败并且pylint -E 不输出时发生。
有人已经经历过这个并且可以解释为什么差异发生以及运行pylint的最佳方式是什么?
答案 0 :(得分:28)
我的一分钱
find . -iname "*.py" | xargs pylint
它是如何运作的?
find
发现所有文件都以py
结尾,并在每个文件上传递给xargs
,xargs
运行pylint
命令。
注意:您也可以为pylint
命令提供任何参数。
编辑:
根据doc我们可以使用
[1] pylint mymodule.py
[2] pylint目录/ mymodule.py
如果directory是python包(即有一个__init__.py
文件或它是一个隐式命名空间包)或者如果“directory”在python路径中,那么[2]将起作用。
答案 1 :(得分:21)
只需将目录名称传递给pylint命令即可。要隐藏$helm repo add helm_interface http://9.21.61.150:32576/artifactory/helm_interface
Error: Looks like "http://9.21.61.150:32576/artifactory/helm_interface" is not a valid chart
repository or cannot be reached: Failed to fetch http://9.21.61.150:32576/artifactory/helm_interface/index.yaml : 404 Not Found
中的所有文件:
./server
答案 2 :(得分:12)
对于目录中的所有python文件,您可以运行:
pylint *.py
对于目录及其子目录中的所有python文件,可以运行:
pylint **/*.py
答案 3 :(得分:7)
要在Git版本控制中的所有代码上运行Pylint,
pylint $(git ls-files '*.py')
这非常快,因为Git已经知道所有文件的名称。它也可以在缺少Bash 4的macOS上运行。但是,它不会删除新文件并且尚未git add
存放到存储库中的文件。
答案 4 :(得分:4)
我在根目录下使用:
go run main.go
答案 5 :(得分:3)
如果您在目录中没有__init__.py
文件,并且由于各种原因您不想这样做,我的方法是
touch __init__.py; pylint <folder-name>; rm __init__.py
答案 6 :(得分:2)
您尝试使用psospector(https://pypi.org/project/prospector/)还是pylint_runner(https://pypi.org/project/pylint_runner/)
答案 7 :(得分:2)
我使用“ pylint_runner”来对目录和子目录中的所有文件运行pylint。 Python 3.7.4
pylint_runner 0.54
pylint 2.4.1
https://pypi.org/project/pylint_runner/
以下是从Docker容器运行它的命令:
docker run -i --rm --name my_container \
-v "$PWD":"$PWD" -w "$PWD" \
python:3.7 \
/bin/sh -c "pip3 install -r requirements.txt; pylint_runner -v"
requirements.txt
-应该存在于“ $ PWD”目录中,并包含“ pylint_runner”条目。
答案 8 :(得分:1)
已经有一个issue for this,希望很快就能解决。
如果您不喜欢使用xargs
,则可以使用普通的find-exec:
find . -type f -name "*.py" -exec pylint -j 0 --exit-zero {} \;
我pylint Project-Dir
遇到的问题是所有绝对进口都无法使用。
答案 9 :(得分:0)
如果您的目标是在当前工作目录和子文件夹中的所有文件上运行pylint,这是一种解决方法。该脚本在当前目录上运行pylint。如果__init__.py
不存在,它将创建它,运行pylint,然后将其删除。
#! /bin/bash -
if [[ ! -e __init__.py ]]; then
touch __init__.py
pylint `pwd`
rm __init__.py
else
pylint `pwd`
fi
答案 10 :(得分:0)
如果要运行自定义配置文件,请使用以下命令
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/gijgo@1.9.6/css/gijgo.min.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/gijgo@1.9.6/js/gijgo.min.js" type="text/javascript"></script>
<div id="fromDatetoDate"></div>
<!-- this one to show dates -->
<form id="areaFormID" method="get">
<div class="container">
<h4>Start Date:</h4>
<input type="text" id="startdate" name="fromdate" width="276" placeholder="dd/mm/yyyy" required />
<h4>End Date:</h4>
<input type="text" id="enddate" name="todate" width="276" placeholder="dd/mm/yyyy" required />
<h4>Outlets:</h4>
<select name="outlet" id="myselect">
<option>ALL</option>
<option>1</option>
<option>2</option>
</select>
<div>
<br>
<button id="btn-search" class="btn btn-default" type="submit">
<i class="fa fa-search"></i> Search
</button>
</div>
</div>
</form>
答案 11 :(得分:0)
touch __init__.py
在当前目录中touch __init__.py
pylint $(pwd)
(或等效为pylint /absolute/path/to/current/directory
)答案 12 :(得分:0)
pytest
与pytest-pylint
可以在所有Python文件上简单地运行pylint:
在您的setup.cfg
中,确保您至少拥有:
[tool:pytest]
addopts = --pylint
下一步,在命令行上运行pytest -v
。
答案 13 :(得分:0)
要在所有子目录中运行Pylint,
pylint $(find [a-z]* -type d)
此解决方案比其他解决方案更简单,更直接。它无需安装即可使用,包括在没有Bash 4的macOS上。
之所以使用[a-z]*
是因为大多数项目都有Git或其他魔术子目录,这会污染结果。如果您有以大写字母开头的子目录,请使用以下变体:
pylint $(find [a-zA-Z]* -type d)