gpt4 book ai didi

python - 使用 MsBuild 构建 .pyproj 时如何运行 PyLint?

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:18 26 4
gpt4 key购买 nike

我需要在构建时运行 PyLint 来验证我的 Python 文件代码。 python 文件位于 .pyproj 下(我使用 Visual Studio 2015 的 Python 工具)。我怎样才能做到这一点?

更新:

到目前为止,我有这样的代码:

<Target Name="PythonRunPyLint">
<PropertyGroup>
<PyLintWarningRegex><![CDATA[^(?<filename>.+?)\((?<line>\d+),(?<column>\d+)\): warning (?<msg_id>.+?): (?<message>.+?)$]]></PyLintWarningRegex>
</PropertyGroup>
<RunPythonCommand Target="pylint.lint"
TargetType="module"
Arguments="&quot;--msg-template={abspath}({line},{column}): warning {msg_id}: {msg} [{C}:{symbol}]&quot; -r n @(Compile, ' ')"
ExecuteIn="console"
WorkingDirectory="$(MSBuildProjectDirectory)"
WarningRegex="$(PyLintWarningRegex)"
RequiredPackages="pylint&gt;=1.0.0">
<Output TaskParameter="ConsoleOutput" PropertyName="OutputText" />
<Output TaskParameter="ConsoleError" PropertyName="ErrorText" />
</RunPythonCommand>
</Target>

但是当我运行 msbuild 时,我得到输出,并且有 0 个警告,为什么 regex 不解析警告(正则表达式取自 Microsoft.PythonTools.targets,并且在 Visual Studio 中执行“工具”>“运行 PyLint”时有效)?

C:\>msbuild TestPylint.pyproj /t:Build
Microsoft (R) Build Engine version 14.0.23107.0
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 15/10/2015 20:10:26.
Project "C:\TestPylint.pyproj" on node 1 (Build target(s)).
PythonRunPyLint:
************* Module TestPylint
C:\TestPylint.py(2,0): warning C0304: Final newline missing [C:missing-final-newline]
C:\TestPylint.py(1,0): warning C0111: Missing module docstring [C:missing-docstring]
No config file found, using default configuration
Done Building Project "C:\TestPylint.pyproj" (Build target(s)) -- FAILED.

Build FAILED.
0 Warning(s)
0 Error(s)

最佳答案

它不是开箱即用的,但如果您愿意,可以将其添加到您的项目中。定位Microsoft.PythonTools.targets ,然后找到<Target Name="PythonRunPyLintCommand" ...里面。将其复制到您的项目中,将其重命名为“PythonRunPyLint”之类的名称,然后在其中替换 CreatePythonCommandItemRunPythonCommand 。您可能还必须删除该元素上的一些属性(基本上 MSBuild 会提示的任何属性都不存在),并删除子元素 <Output> .

然后就开始使用该目标进行构建。

关于python - 使用 MsBuild 构建 .pyproj 时如何运行 PyLint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33112355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com