为teamcity的代码语法检查工具pyflakes增加支持python2和python3
TeamCity和pyflakes
TeamCity是一款由JetBrains公司开发的持续集成和部署工具,它提供了丰富的功能来帮助团队协作进行软件开发。其中包括代码检查、自动化构建、测试运行、版本控制等多个方面。
在我们团队中使用TeamCity进行配合pyflakes代码检查,我们需要升级pyflakes到支持python3,同时保留python2的语法检查功能。
在Teamcity中修改python脚本后,无需重启teamcity即可生效。
pyflakes语法检查同时支持python2/3

pyflakes
查看版本:指令: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中
C:\Python38
C:\Python38\Scripts
同时不要把这几个目录添加到环境变量的path中
C:\Users\zhaoqingqing01\AppData\Local\Programs\Python\Python38\
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的更多相关文章
- 四种java代码静态检查工具
[转载]常用 Java 静态代码分析工具的分析与比较 转载自 开源中国社区 http://www.oschina.net/question/129540_23043 1月16日厦门 OSC ...
- Grunt 之 使用 JavaScript 语法检查工具 jshint
前端开发环境准备好了,我们准备开始进行开发. 前端开发的主力语言是 JavaScript,这是一种脚本语言,没有编译器,也就没有了编译器带给我们的语法检查,怎样保证代码的质量呢?jshint 是一个强 ...
- 自己写个 Drools 文件语法检查工具——栈的应用之编译器检测语法错误
一.背景 当前自己开发的 Android 项目是一个智能推荐系统,用到 drools 规则引擎,于我来说是一个新知识点,以前都没听说过的东东,不过用起来也不算太难,经过一段时间学习,基本掌握.关于 d ...
- python代码风格检查工具──pylint
pylint是一个python代码检查工具,可以帮助python程序员方便地检查程序代码的语法和风格,通过这个工具,可以使你的python代码尽量保持完美,哈哈.具体可以检查什么东西呢?比如你写了 f ...
- C/C++代码静态检查工具Cppcheck在VS2008开发环境中的安装配置和使用
Cppcheck is an analysis tool for C/C++code. Unlike C/C++ compilers and many other analysis tools, it ...
- 玩转Eclipse — 自动代码规范检查工具Checkstyle
大项目都需要小组中的多人共同完成,但是每个人都有自己的编码习惯,甚至很多都是不正确的.那么如何使小组所有开发人员都遵循某些编码规范,以保证项目代码风格的一致性呢?如果硬性地要求每个开发人员在提交代码之 ...
- 痞子衡嵌入式:恩智浦SDK驱动代码风格检查工具预览版
大家好,我是痞子衡,是正经搞技术的痞子. 接上文 <恩智浦SDK驱动代码风格.模板.检查工具> 继续聊,是的,过去的三天里我花了一些时间做了一个基于 PyQt5 的 GUI 工具,可以帮助 ...
- SwiftLint:代码规范检查工具介绍
Swift-CodeStyle Checker:SwiftLint 介绍: SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 GitHub's Swift 代码风 ...
- 代码重复检查工具——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 输出类似: ===== ...
- python代码格式检查工具部署pre_commit
如何使用pre_commit?1. 合并该分支 2. 在git根目录下使用pre-commit install即可3. 如果没有装pre-commit 安装一下pip install pre-comm ...
随机推荐
- nginx的location与proxy_pass配置超详细讲解及其有无斜杠( / )结尾的区别
本文所使用的环境信息如下: windows11 (主机系统) virtual-box-7.0环境下的ubuntu-18.04 nginx-1.22.1 (linux) 斜杠结尾之争 实践中,nginx ...
- Gitee 码云与Git 交互
一.进入码云官方网站,注册用户 官网地址:https://gitee.com/ 二.创建远程仓库 [1]点击右上角的 + 号进行创建
- 【Eolink】Apikit V10.8.0 版本发布!增加支持 DUBBO、TCP、SOAP 、HSF、UDP 的接口协议
Apikit 最新功能来袭! 我们在这个版本实现了接口管理和测试能力的全面升级,包括且不限于: 新增功能速览: 增加支持 DUBBO.TCP.SOAP .HSF.UDP 接口文档和协议 接口文档可自动 ...
- vue中新的状态管理器-pinia
背景 对于pinia的使用,可参考官方文档在这不做过多赘述.这边主要来讲讲pinia中 少用且好用的方法,为什么我们选择pinia而不用vuex ps: 以下写法全部基于组合式API 使用方式: 先下 ...
- 逍遥自在学C语言 | 第一个C语言程序 九层之台起于垒土
一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.C语言简介 C语言是一种高级语言,运行效率仅次于汇编,支持跨平 ...
- 派生,super 多态与多态性 组合
派生的方法与重用: 方法一:指名道姓的调用某一类函数 >>> class Teacher(People): ... def __init__(self,name,sex,age,ti ...
- Java Stream流
Java8 Stream流编程 Stream 使用一种类似于SQL语句从数据库查询数据的直观方式来提供对 Java 集合运算和表达的高阶抽象.得益于 Lambda 所带来的函数式编程,Stream A ...
- sql求每家店铺销量前三的sku, 附python解法
背景 有一张表: date store_id sku sales 2023-01-01 CK005 03045 50 date 代表交易日期,store_id代表门店编号,sku代表商品,sales代 ...
- 如何玩转国产神器:接口一体化协作平台Apifox!
前言:Apifox是什么? 简介: 简单来说,Apifox = swagger + mock + postman+Jmeter,是API 文档.API 调试.API Mock.API 自动化测试一体化 ...
- Solon2 常用注解之 @ProxyComponent 用法说明
在 Solon 提倡"克制"的原则下,托管组件分为: 普通组件 代理组件(即 @ProxyComponent 注解的类).代理的细节可以看下<动态代理的本质> . 之所 ...