Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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
Python 违规插件使用错误路径查找pep8报告_Python_Windows_Jenkins_Pytest_Pep8 - Fatal编程技术网

Python 违规插件使用错误路径查找pep8报告

Python 违规插件使用错误路径查找pep8报告,python,windows,jenkins,pytest,pep8,Python,Windows,Jenkins,Pytest,Pep8,我正在使用pytest运行pep8检查(下面列出的所有检查都发生在windows计算机上): 我设置了一个作业,在reports\pep8.log中查找pep8.log文件 但当我运行作业时,我发现插件查找报告的路径毫无意义: 生成的xml文件: C:\Jenkins\jobs\python-template-2\workspace\reports\pep8.log ================89次失败,33次跳过,1.48秒内出现1次错误================ C:\Jenki

我正在使用pytest运行pep8检查(下面列出的所有检查都发生在windows计算机上):

我设置了一个作业,在reports\pep8.log中查找pep8.log文件

但当我运行作业时,我发现插件查找报告的路径毫无意义:

生成的xml文件: C:\Jenkins\jobs\python-template-2\workspace\reports\pep8.log ================89次失败,33次跳过,1.48秒内出现1次错误================

C:\Jenkins\jobs\python-template-2\workspace>exit 1构建步骤 “Быццццццццццццццццццц 错误:由于异常java.io.FileNotFoundException,发布服务器hudson.plugins.ViolationsPublisher中止: C:\Jenkins\jobs\python-template-2\builds\2013-10-22\u 13-30-44\inflictions\file\C:\Jenkins\jobs\python-template-2\workspace\contestics\migrations\0003\u auto\u add\u votinghistory.py.xml (文件名中的语法错误)位于java.io.FileOutputStream.open(本机) 方法)位于java.io.FileOutputStream。(未知源)位于 java.io.FileOutputStream。(未知源)位于 write(FilePath.java:1642)位于 hudson.plugins.inflictions.generate.ExecuteFilePath.execute(ExecuteFilePath.java:40) 在 hudson.plugins.inflictions.generate.GenerateXML.execute(GenerateXML.java:47) 在 hudson.plugins.ViolationsCollector.invoke(ViolationsCollector.java:122) 在 hudson.plugins.ViolationsCollector.invoke(ViolationsCollector.java:25) 位于hudson.FilePath.act(FilePath.java:912) act(FilePath.java:885)位于 hudson.plugins.ViolationsPublisher.perform(ViolationsPublisher.java:74) 位于hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 在 hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:781) 在 hudson.model.AbstractBuild$AbstractBuildExecution.PerformalBuildSteps(AbstractBuild.java:753) 位于hudson.model.Build$BuildExecution.post2(Build.java:183) hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:706) 位于hudson.model.Run.execute(Run.java:1690) 运行(FreeStyleBuild.java:46) hudson.model.ResourceController.execute(ResourceController.java:88) 在hudson.model.Executor.run(Executor.java:230)完成:失败

此外,我尝试在不使用pytest的情况下启动pep8检查,而是在windows中使用此命令查找和检查所有.py文件:

FOR /R %i IN (*.py) DO pep8 %i  1>>reports\pep8.log 
在这种情况下,我得到以下结果:

C:\Jenkins\jobs\python-template-2\workspace>exit 1构建步骤 已将生成标记为失败错误的“Сыцццццццццццццццццццц hudson.plugins.violations.ViolationsPublisher因异常而中止 java.io.FileNotFoundException: C:\Jenkins\jobs\python-template-2\builds\2013-10-15\u 13-31-37\invalices\file\C:\Jenkins\jobs\python-template-2\workspace\notifications\email.py.xml (文件名中的语法错误)位于java.io.FileOutputStream.open(本机) 方法)位于java.io.FileOutputStream。(未知源)位于 java.io.FileOutputStream。(未知源)位于 write(FilePath.java:1666)位于 hudson.plugins.inflictions.generate.ExecuteFilePath.execute(ExecuteFilePath.java:40) 在 hudson.plugins.inflictions.generate.GenerateXML.execute(GenerateXML.java:47) 在 hudson.plugins.ViolationsCollector.invoke(ViolationsCollector.java:122) 在 hudson.plugins.ViolationsCollector.invoke(ViolationsCollector.java:25) 位于hudson.FilePath.act(FilePath.java:916) act(FilePath.java:889)位于 hudson.plugins.ViolationsPublisher.perform(ViolationsPublisher.java:74) 位于hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 在 hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:786) 在 hudson.model.AbstractBuild$AbstractBuildExecution.PerformalBuildSteps(AbstractBuild.java:758) 位于hudson.model.Build$BuildExecution.post2(Build.java:183) hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:711) 位于hudson.model.Run.execute(Run.java:1690) 运行(FreeStyleBuild.java:46) hudson.model.ResourceController.execute(ResourceController.java:88) 在hudson.model.Executor.run(Executor.java:246)完成:失败


我在与Jenkins一起使用pylint时遇到了类似的错误。这似乎发生在windows环境中,这与违规插件如何构建路径有关。如果您在错误中注意到,它正在尝试将您测试的文件的完整路径添加到当前目录(即
C:\Jenkins\jobs\python-template-2\builds\2013-10-22\u 13-30-44\inflictions\file\\

为了解决我遇到的问题,我编写了一个小脚本,并在测试后运行它。它删除了大部分路径,只保留了可以添加到基本路径的部分,而不会导致文件未找到错误。以下是脚本:

with open('.\pylint_report.xml', 'r') as lint_file:
    out = ''.join([line.replace('E:\\Jenkins\workspace\\', '')
                   for line in lint_file.readlines()])

with open('.\pylint_report.xml', 'w') as lint_file:
    lint_file.write(out)
您应该能够使其适应您的特定用例

with open('.\pylint_report.xml', 'r') as lint_file:
    out = ''.join([line.replace('E:\\Jenkins\workspace\\', '')
                   for line in lint_file.readlines()])

with open('.\pylint_report.xml', 'w') as lint_file:
    lint_file.write(out)