CI中python, javascript, bash, xml的检查

来源:互联网 发布:淘宝小助手怎么设置 编辑:程序博客网 时间:2024/06/06 01:07

现状

目前,我们的CI,只对C语言进行了检查。
但是,RF的使用导致了越来越多的python程序;
web的开发也离不开javascript;
bash脚本遍布各个文件夹;
XML则是单板的配置核心;
为了单板的可靠运行,这些都没有理由不去检查。

lint检查

CI中,采用各种语言的lint的思路去静态检查。

python检查

python有很多工具可以检查:
比较有名的有pylint,pep8,pychecker等等
由于jenkins插件对pylint支持的较多,而且pylint名气也最大,因此使用pylint
举例:

pylint esmu/**/*.py tools/jenkins/**/*.py esmu_robot/library/python/*.py -j 16 -f parseable > pylint_report.xml || echo "pylint return $?"

-j 16 代表16个进程同时并发检查,充分利用服务器多核的优势
-f parseable 代表输出格式,使用parseable(可分析的)是为了给jenkins插件分析结果
最后加了一句echo,主要是为了让返回结果为0,让后面的语句继续执行(pylint有一个告警,都会返回非0)

jenkins插件我使用的是:
scan for compiler warnings
(这个插件可以支持很多lint工具的结果分析)
来生成python扫描结果

TODO:pylint的规则文件

需要制定一个适合我们的规则文件,现在的告警实在太多了!

javascript检查

javascript的lint,我选择的是jshint
(可以通过npm方式安装
服务器连接网络后,进入root用户, npm install jshint即可,如果出现错误,可以尝试npm install -g jshint)

jshint esmu/etc/web/js_private esmu/etc/web/js_private --reporter jslint > jshint_jslint.xml || echo "jshint return $?"

–reporter jslint 的意思是输出采用jslint的方式输出。
(jslint是最早的工具,jshint改进了这个工具,但jenkins的插件只支持jslint,所以输出格式为jslint)
后面的echo也是为了exit结果为0,让后面的语句继续

如果运行出现错误:
/usr/bin/env: ‘node’: No such file or directory
执行如下即可:
sudo ln -s /usr/bin/nodejs /usr/bin/node

XML的检查

采用xmllint进行检查
(通过apt install libxml2-utils 安装即可拥有xmllint)
举例:

find $WORKSPACE -name "*.xml" | xargs -i xmllint --noout {}

xmllint无法自动去文件夹里找xml,因此,需要通过 | xargs -i xmllint {}的方式依次传递给xmllint
(如果不懂xargs的使用,自行脑补)

这样,等价于

xmllint --noout xxxx.xml

但是,这样只能分析语法错误,无法找到填写内容是否满足配置要求(例如类型,超过范围,不符合要求等)
因此,建议加上
xxxx.xsd (定义xml的文件)
这样语句变为:

xmllint --noout --schema xxxx.xsd xxxx.xml

这个语句会先编译.xsd文件(如果该文件有错,也会报错),然后再用它去检查.xml文件

bash(shell脚本)检查

其实这个也是可以检查,只不过不是lint系列工具。
我使用的是shellcheck
这个工具可以发现很多不规范或潜在的风险的

原创粉丝点击