TeamCity和pyflakes

TeamCity是一款由JetBrains公司开发的持续集成和部署工具,它提供了丰富的功能来帮助团队协作进行软件开发。其中包括代码检查、自动化构建、测试运行、版本控制等多个方面。

在我们团队中使用TeamCity进行配合pyflakes代码检查,我们需要升级pyflakes到支持python3,同时保留python2的语法检查功能。

在Teamcity中修改python脚本后,无需重启teamcity即可生效。

pyflakes语法检查同时支持python2/3

pyflakes

pyflakes · PyPI

查看版本:指令:pip list,pyflakes 2.3.1

teamcity代码:https://svn-xxx/tools/teamcity/check_pyflakes.py

从官网查到最后一个同时支持python2和3的pyflakes版本:https://pypi.org/project/pyflakes/2.4.0/,实测下来它要分别为py2和py3安装,而不是只安装一个来同时适配2和3。

关于pyflakes的使用和配置:python代码检查工具(静态代码审查)

python3的pyflakes支持python2吗?

结论:不支持

语法有差别,比如print

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast, is_py3:1 ,filePath:D:/debug/qing_debug.py
origin msg: D:/xxx/qing_debug.py:54:9: invalid syntax
print "[zhao]aaaaa"
^

再举个例子

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast, is_py3:1 ,filePath:D:/debug/qing_debug.py
origin msg: D:/debug/qing_debug.py:32:7: invalid syntax
exec 'print 111'
^

再来个例子

PS E:\Code\python_study\collection> py -3 -m pyflakes range_test.py
range_test.py:9:1: 'random' imported but unused
range_test.py:14:10: undefined name 'xrange'

官方的建议

官方建议我们为python2/3分别安装pyflakes。

You can also invoke Pyflakes with python3 -m pyflakes . or python2 -m pyflakes . if you have it installed for both versions.

如何区分是python3还是python2?

按工程人工标记,因为同一个工程中python2和3不能混用,所以在写代码的时候程序员就已经知道当前工程应该用python2解释器还是python3解释器。

因为一个py脚本是要放到python2还是python3的解释器来执行是由程序员来决定的。

一台电脑同时安装python2和3

我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面。这个启动器允许我们指定使用Python2还是Python3来运行代码(当然前提是你已经成功安装了Python2和Python3)。

在安装python3时不要勾选添加安装目录到环境变量中,下面这几个都不要添加到环境变量的path中

  1. C:\Python38

  2. C:\Python38\Scripts

同时不要把这几个目录添加到环境变量的path中

  1. C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\

  2. C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\Scripts\

使用pip安装库

我们在安装python3的时候没有把py3添加到环境变量中,所以当我们使用pip时默认是指向python2。

如果你不放心,还可以这样:py -2 -m pip install XXXX

为Python3安装软件:py -3 -m pip install XXXX

更多原理性的知识,欢迎查阅我的KM文章:zhaoqingqing的网易km个人空间 (netease.com)

为python3安装 pyflakes

py -3 -m pip install pyflakes

C:\Users\zhaoqingqing01>py -3 -m pip install pyflakes
Collecting pyflakes
Downloading pyflakes-3.0.1-py2.py3-none-any.whl (62 kB)
|████████████████████████████████| 62 kB 4.8 MB/s
Installing collected packages: pyflakes
WARNING: The script pyflakes.exe is installed in 'C:\Python38\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pyflakes-3.0.1

pyflakes检查python语法

pyflakes console.py >logPyflakes.txt 2>&1

py -3 -m pyflakes console.py >logPyflakes.txt 2>&1

PS D:\work\tools\start_docker\scripts> pyflakes console.py
console.py:20:10: invalid syntax
async def connect(self, command):
^
PS D:\work\tools\start_docker\scripts> py -3 -m pyflakes console.py
PS D:\work\tools\start_docker\scripts>

集成到teamcity

旧版只支持到python2

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast , is_py3:0 ,filePath:D:/xxx/console.py
origin msg D:/xxx/console.py:20:10: invalid syntax
async def connect(self, command):
^

开启python3支持

PS D:\work\tools> python -u "d:\xxx\test_teamcity.py"
[zhao]docheck py ast , is_py3:1 ,filePath:D:/xxx/console.py
origin msg

参数是啥意思

python 执行保存log 1>>log.txt 2>&1_python 2>log.txt_做测试的喵酱的博客-CSDN博客

Python—后台运行(nohup 、&、 2>&1详解) - 刘_love_田 - 博客园 (cnblogs.com)

为teamcity的代码语法检查工具pyflakes增加支持python2和python3的更多相关文章

  1. 四种java代码静态检查工具

    [转载]常用 Java 静态代码分析工具的分析与比较 转载自 开源中国社区 http://www.oschina.net/question/129540_23043       1月16日厦门 OSC ...

  2. Grunt 之 使用 JavaScript 语法检查工具 jshint

    前端开发环境准备好了,我们准备开始进行开发. 前端开发的主力语言是 JavaScript,这是一种脚本语言,没有编译器,也就没有了编译器带给我们的语法检查,怎样保证代码的质量呢?jshint 是一个强 ...

  3. 自己写个 Drools 文件语法检查工具——栈的应用之编译器检测语法错误

    一.背景 当前自己开发的 Android 项目是一个智能推荐系统,用到 drools 规则引擎,于我来说是一个新知识点,以前都没听说过的东东,不过用起来也不算太难,经过一段时间学习,基本掌握.关于 d ...

  4. python代码风格检查工具──pylint

    pylint是一个python代码检查工具,可以帮助python程序员方便地检查程序代码的语法和风格,通过这个工具,可以使你的python代码尽量保持完美,哈哈.具体可以检查什么东西呢?比如你写了 f ...

  5. C/C++代码静态检查工具Cppcheck在VS2008开发环境中的安装配置和使用

    Cppcheck is an analysis tool for C/C++code. Unlike C/C++ compilers and many other analysis tools, it ...

  6. 玩转Eclipse — 自动代码规范检查工具Checkstyle

    大项目都需要小组中的多人共同完成,但是每个人都有自己的编码习惯,甚至很多都是不正确的.那么如何使小组所有开发人员都遵循某些编码规范,以保证项目代码风格的一致性呢?如果硬性地要求每个开发人员在提交代码之 ...

  7. 痞子衡嵌入式:恩智浦SDK驱动代码风格检查工具预览版

    大家好,我是痞子衡,是正经搞技术的痞子. 接上文 <恩智浦SDK驱动代码风格.模板.检查工具> 继续聊,是的,过去的三天里我花了一些时间做了一个基于 PyQt5 的 GUI 工具,可以帮助 ...

  8. SwiftLint:代码规范检查工具介绍

    Swift-CodeStyle Checker:SwiftLint 介绍: SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 GitHub's Swift 代码风 ...

  9. 代码重复检查工具——python的使用CPD比较好用,clone digger针对py2,其他有名的如Simian PMD-CPD CloneDR CCCD CCFinder Bauhaus CodePro

    代码重复检测: cpd --minimum-tokens 100 --files g:\source\python\ --language python >log.txt 输出类似: ===== ...

  10. python代码格式检查工具部署pre_commit

    如何使用pre_commit?1. 合并该分支 2. 在git根目录下使用pre-commit install即可3. 如果没有装pre-commit 安装一下pip install pre-comm ...

随机推荐

  1. 50个Java面试必问的面试题,我都给你整好了

    ​我们整理了一份主要的Angular面试问题清单,分为三部分: 角度面试问题–初学者水平 角度面试问题–中级 角度面试问题–高级 初学者水平–面试问题 1.区分Angular和AngularJS. 2 ...

  2. js函数防抖节流

    // 3.1 函数防抖: // 当持续触发事件时,一定时间段内没有再次触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时.// 也就是说当一个用户一直触发这个函数, ...

  3. upload-labs游戏

    upload-labs游戏 目录 upload-labs游戏 黑名单绕过方式 第1关:JavaScript前端验证 第2关:MIME类型的验证 第3关:特殊后缀的黑名单验证 第4关:.htaccess ...

  4. 如何单机部署多个 MySQL 8.0 实例 ?

    在服务器资源有限的情况下,可利用该方案快速搭建各类 mysql 架构方案.各 MySQL 实例共享一个 mysqld 主程序,但各实例数据目录是独立的,存放在不同的文件夹中:好了.废话不多说,直接上干 ...

  5. XXL-Job与Elastic-Job详细对比

    1. 失败处理策略 失败处理策略 XXL-Job Elastic-Job 失败重试 支持,最多重试三次.重试时间间隔可配置. 支持,最多重试十次.重试时间间隔可配置. 失败告警 支持,可配置告警接收人 ...

  6. pandas之分类操作

    通常情况下,数据集中会存在许多同一类别的信息,比如相同国家.相同行政编码.相同性别等,当这些相同类别的数据多次出现时,就会给数据处理增添许多麻烦,导致数据集变得臃肿,不能直观.清晰地展示数据. 针对上 ...

  7. SpringBoot整合RocketMQ,老鸟们都是这么玩的!

    今天我们来讨论如何在项目开发中优雅地使用RocketMQ.本文分为三部分,第一部分实现SpringBoot与RocketMQ的整合,第二部分解决在使用RocketMQ过程中可能遇到的一些问题并解决他们 ...

  8. Redis 数据类型 Set

    Redis 数据类型 Set(集合) Redis 常用命令,思维导图 >>> Redis 的 Set 是 String 类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复 ...

  9. ajax面试题总结

    转载请注明出处: 1.ajax异步和同步的区别 Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新 ...

  10. Portainer安装

    个人博客地址: https://note.raokun.top 拥抱ChatGPT,国内访问网站:https://www.playchat.top Portainer是一个可视化的容器镜像的图形管理工 ...