lizar的使用

Python: 统计代码复杂度lizard模块的使用
能够同时统计代码量和代码复杂度

安装:

按照ptyhon环境
sudo apt install python3-pip
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
tar -zxvf Python-3.7.7.tgz
cd Python-3.7.7/
yum update -y
yum install -y make gcc gcc-c++
./configure
make
make install
创建软链接
ln -s /usr/python/bin/python3 /usr/bin/python3
ln -s /usr/python/bin/pip3 /usr/bin/pip3
安装lizard环境
Git源码链接 https://github.com/terryyin/lizard
pip: pip install lizard
源码:python setup.py install --install-dir=/path/to/installation/directory/
安装Request环境(上报使用)
requests包依赖:
certifi,idna,urllib3,chardet

圈复杂度概念

圈复杂度是 Thomas J. McCabe 在 1976年开创的软件指标,用来判断程序的复杂度。
这个指标度量源代码中线性独立的路径或分支的数量。
根据 McCabe 所说,一个方法的复杂度最好保持在10 以下。
这是因为对人类记忆力的研究表明,人的短期记忆只能存储 7 件事(偏差为正负 2)。
如果开发人员编写的代码有 50 个线性独立的路径,那么为了在头脑中描绘出方法中发生的情况,需要的记忆力大约超过短期记忆容量的5倍。
简单的方法不会超过人的短期记忆力的极限,因此更容易应付,事实证明它们的错误更少。
Enerjy 在 2008年所做的研究表明,在圈复杂度与错误数量之间有很强的相关性。
复杂度为 11 的类的出错概率为 0.28,而复杂度为 74的类的出错概率会上升到 0.98。

实际执行常用命令

cd /…/…你的代码目录
cd /…/…你的代码目录
(1)lizard 默认递归检测文件下的所有文件
(2)lizard -o check.txt 将所有文件输出到某个文件
(3)lizard -C 15 检测CCN超过15
(4)lizard -C 15 .\yingjiafupan\run_fupan.py 检测某个文件CCN超过15

字段含义

NLOC, the nloc (lines of code without comments), 不包含注释的代码行数
CCN, cyclomatic complexity number, 圈复杂度也就是分支复杂度,最好保持在10 以下
token, token count of functions. token的个数(关键字,标示符,常量,标点符号,操作符)
param, parameter count of functions. 参数统计数就是函数的参数个数
Cnt, Count的缩写
Rt, Rate的缩写
代码复杂度超限比例=圈复杂度(CCN)大于10的函数的个数/函数的个数
圈复杂度(CCN)大于10的函数的个数:如上面结果,有一个CCN大于10的,取 Warning cnt的值
lizard [options] [PATH or FILE] [PATH] …
示例 检测某目录下 除 tests目录下 Python文件
lizard mySource/ -x"./tests/*" -l python

-h, --help 显示帮助并退出
–version 显示当前lizard版本并退出
-l LANGUAGES, --languages LANGUAGES
开发语言列表, 检测支持的开发语言 例如:lizard -l cpp -l java
支持语言:cpp, csharp, java, javascript, objectivec, php, python, ruby, swift, ttcn
-V, --verbose Output in verbose mode (long function name)
-C CCN, --CCN CCN Threshold for cyclomatic complexity number warning.
The default value is 15. Functions with CCN bigger
than it will generate warning
-L LENGTH, --length LENGTH
Threshold for maximum function length warning. The
default value is 1000. Functions length bigger than it
will generate warning
-a ARGUMENTS, --arguments ARGUMENTS
Limit for number of parameters
-w, --warnings_only Show warnings only, using clang/gcc’s warning format
for printing warnings.
http://clang.llvm.org/docs/UsersManual.html#cmdoption-
fdiagnostics-format
-i NUMBER, --ignore_warnings NUMBER
If the number of warnings is equal or less than the
number, the tool will exit normally, otherwise it will
generate error. Useful in makefile for legacy code.
-x EXCLUDE, --exclude EXCLUDE 不检测文件
Exclude files that match this pattern. * matches
everything, ? matches any single character,
“./folder/*” exclude everything in the folder
recursively. Multiple patterns can be specified. Don’t
forget to add “” around the pattern.
–csv Generate CSV output as a transform of the default
output
-X, --xml Generate XML in cppncss style instead of the tabular
output. Useful to generate report in Jenkins server
-t WORKING_THREADS, --working_threads WORKING_THREADS
number of working threads. The default value is 1.
Using a bigger number can fully utilize the CPU and
often faster.
-m, --modified Calculate modified cyclomatic complexity number,
which count a switch/case with multiple cases as
one CCN.
-E EXTENSIONS, --extension EXTENSIONS
User the extensions. The available extensions are:
-Ecpre: it will ignore code in the #else branch.
-Ewordcount: count word frequencies and generate tag
cloud. -Eoutside: include the global code as one
function.
-s SORTING, --sort SORTING
Sort the warning with field. The field can be nloc,
cyclomatic_complexity, token_count, parameter_count,
etc. Or an customized file.
-W WHITELIST, --whitelist WHITELIST 白名单
The path and file name to the whitelist file. It’s
‘./whitelizard.txt’ by default

lizard的基本使用相关推荐

  1. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)...

    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...

  2. Windows IIS 日志分析研究(Log Parser Log Parser Lizard Log Parser Studio) update...

    Windows主要有以下三类日志记录系统事件:应用程序日志.系统日志和安全日志. 存放目录:X:\Windows\System32\winevt\Logs\ System.evtx  系统日志 App ...

  3. [other] 代码量代码复杂度统计-lizard

    [other] 代码量代码复杂度统计-lizard [other] 代码量代码复杂度统计-lizard lizard的可以用来统计下面的一些数据 不包含代码注释的代码行数 CCN 代码的复杂度,也就是 ...

  4. [FROM WOJ]#1243 蜥蜴 lizard

    #1243 蜥蜴 lizard 题面 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即 ...

  5. Log Parser 2.2 + Log Parser Lizard GUI 分析IIS日志示例

    Log Parser 日志分析工具,用命令行操作,可以分析 IIS logs,event logs,active directory,log4net,file system,t-sql Log Par ...

  6. 黑客组织 Lizard Squad 承认黑了联想官网

    在PC中预装广告软件Superfish导致信息安全漏洞,被普遍认为是联想网站遭到攻击的主要原因.上个月,Lizard Squad上月刚刚黑掉索尼PlayStation Network和微软Xbox L ...

  7. Lizard Era: Beginning

    Lizard Era: Beginning 题面翻译 有 n ( n ⩽ 25 ) n(n \leqslant 25) n(n⩽25)个任务和三个人,每次任务给出每个人能得到的值,每次任务选两个人,使 ...

  8. Gym - 101606L Lizard Lounge——LIS

    按照先极角后距离的顺序排序,然后对每一个序列求一遍LIS, 累加起来就是结果 #include <cstdio> #include <cstring> #include < ...

  9. 计蒜客A1676 Rock Paper Scissors Lizard Spock

    链接 https://nanti.jisuanke.com/t/A1676 题解 每种分开算,比如我先考虑出 s c i s s o r s scissors scissors,把模式串中的所有 S ...

  10. LIVE预告 | 哈佛大学CS博士徐莉莉:用博弈论保护野生动物

    <美国国家科学院院刊>2020年发布的研究报告称,在未来二十年内,将有500多种陆生动物濒临灭绝. 面对一个即将到来的荒凉世界,计算机科学家们又能做什么呢?   偷猎是一个全球性的问题.美 ...

最新文章

  1. java8 stream 做累加_Java8新特性之Stream(上)|乐字节
  2. boost::math模块具有输出和输入方面的非有限环回的简要基本测试
  3. SQL中读取Excel 以及 bpc语言
  4. Leecode20. 有效的括号——Leecode大厂热题100道系列
  5. Codeforces Round #630 (Div. 2) E. Height All the Same 排列组合
  6. 前端学习(3132):react-hello-react之受控组件
  7. Apache配置多个监听端口和访问网站的方法
  8. Nodejs留言板案例总结
  9. Crnn中文end-to-end识别
  10. 利用hexo搭建一个只属于你自己的博客
  11. 理想边界尺寸怎么算_CFD 仿真中的边界条件设置
  12. 【考研高数 武忠祥+880版 自用】高数第二章基础阶段思维导图
  13. Android游戏开发学习笔记(三):视频的播放
  14. [从头读历史] 第280节 诗经目录以及十五国风的地域分布
  15. Win10电脑的快捷键有哪些?Windows10常用组合快捷键大全
  16. 【SNS】什么是精英?什么是草根?为什么要SNS?
  17. 线索二叉树的前序遍历
  18. js跳转新页面,指定div加载新页面
  19. 接口测试入门番外篇——如何在谷歌浏览器中集成postman这款接口测试工具呢?
  20. 解除360个人图书馆文档禁止复制限制Chrome浏览器插件

热门文章

  1. 求助:如何实现EA自动判断趋势,寻找高低点,并获取高低点K线价格数据,然后根据价格画出支撑阻力区域.
  2. 学习使用jQuery中的on() 方法
  3. 根据url 参数,页面显示不同背景图片
  4. html2canvas文字消失,html2canvas截图丢失部分元素
  5. uniapp日历组件
  6. Vue中使用echarts,echarts 封装以及使用的事项
  7. 虚拟机的安装以及红帽子企业版5安装
  8. wamp5工具安装介绍
  9. js中继承的方法总结(apply,call,prototype)
  10. 权御天下计算机音乐数字乐谱,权御天下-洛天依-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...