OCLint+Xcode 代码规范利器

  很多公司里面都会强调代码规范的问题,开发者也都知道代码规范的好处。可实际开发中往往因为各种原因使我们把它的优先级不知不觉中降低了。 

  这里向一个有代码追求和洁癖的程序猿推荐一个分析工具,它可以成为你重构代码或着review的基本规则

  OCLint是一个静态分析工具

  Xcode不是有静态分析么,这个有什么卵用? 下面就是官方的文档

  OCLint is a static code analysis tool for improving quality and reducing defects by inspecting C, C++ and Objective-C code and looking for potential problems like:

  • Possible bugs - empty if/else/try/catch/finally statements   
  • Unused code - unused local variables and parameters
  • Complicated code - high cyclomatic complexity, NPath complexity and high NCSS
  • Redundant code - redundant if statement and useless parentheses
  • Code smells - long method and long parameter list
  • Bad practices - inverted logic and parameter reassignment
  • ...

  可能的bugs(空的 if/else/try  等等语句)

  无用的代码  (无用的变量或者参数)

  结构复杂度高的代码

  冗余代码    

  代码风格:长方法和长参数列表

  逻辑混乱

  还有很多诸如 变量名太随便,switch case太少等等,甚至你可以自己定制你想要的规则,这些都可以成为你重构代码或着review的基本规则

   

  OCLint 有很多使用方式,CMake,Bear,xcodebuildxctoolXcodeJenkins,我觉得比较好用的是Xcode和Jenkins,这里主要的也是说和Xcode集成相关的东西。

  下载地址:http://oclint.org/downloads.html 

  安装方法:http://docs.oclint.org/en/dev/intro/installation.html 就不多说了。

  Xcode集成步骤:

  1.添加target,如下图所示,target名字一般就叫做OCLint

  

    2.为target添加脚本

   3.定制脚本

  你可以定制自己的代码分析标准,因为OCLint是兼容C,C++和OC的,可能有一些并不适用于OC,下面这个是官方给出的脚本

  4.开始分析

  选择刚刚创建的OCLint 的target,点build或者 Command+B 快捷键

  

  5.分析完成以后,你看到数量难以想象的各种各样的警告

  

  看看Xcode左边栏

  xi

  

 

  有些警告规则是不合适的,你可以在分析语句里面定制自己的规则,见:http://docs.oclint.org/en/dev/customizing/rules.html

  有些是根本不想要的,在/usr/lib/oclint/rules/ 这个目录下面分析规则是以.dylb 文件存储,被OCLint动态加载的。

   

   搜索到没用的规则,删掉从新编译即可

转载于:https://www.cnblogs.com/wangyaong/p/4653500.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python指定文件路径_python实现指定文件夹下的指定文件移动到指定位置

# coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding(utf8) # print os.getcwd() # 有些文件夹下面有很多文件夹,每个文件夹下面有很多视频文件,现在通过脚本,将文件夹下面的所有文件转移到一个目录下面 …

MySQL求类型为GX的平均积分_mysql基本操作

一、连接操作格式:mysql-h主机地址 -u用户名 -p用户密码例:连接到远程主机上的mysql假设远程主机的IP为:110.110.110.110用户名为root,密码为abcd123则键入以下命令:mysql-h110.110.110.110-uroot-pabcd123二、用户级操作1、selec…

PC-红警联机问题与下载

或许不是软件问题: 你做好相关设置了吗? 红警局域网联机的具体方法: 适用于原版红警、尤里复仇,及任何同样的扩展版。 第一步:安装IPX协议。 方法: 控制面板——网络连接(或网上邻居属性)——本…

k均值聚类算法优缺点_Grasshopper实现K均值聚类算法

本文很长很长,有很多很多图,包含以下部分:1.算法简介2.如何分类平面点3.如何分类空间点4.如何分类多维数据5.后记提醒:以下内容包括:智障操作,无中生友,重复造轮子 等1.算法简介k均值聚类算法&a…

ip地址异常判定python_python检测异常ip,并查询ip详细信息

#!/usr/local/bin/python3# coding:utf-8import string, subprocess, send_mailfrom time import strftime, gmtime, sleep, reimport urllib.request, redef filter_tags(htmlstr):re_cdata re.compile(//]*//\]\]>, re.I) # 匹配CDATAre_script re.compile(]*>[^, re…

保持充沛的精力

转载的:原文地址:http://www.cnblogs.com/siylz/p/4589134.html不管我们做大事还是小事,最需要的是精力。一个人有了充沛的精力,干什么大事都不成问题。可是有不少人往往把他们那宝贵的精力胡乱挥橄在那些走无意义、自讨苦吃的事情…

php while mysql_我怎么能避免在PHP的While循环中使用MySQL查询

我有一个输出类列表的while循环.在类数据库中,教师名称由用户数据库中的教师ID确定.这是我的数据库结构.Classes Database-----------------------------ID CLASS TEACHER1 product design 3User Database-----------------------------ID NAME3 John Doe因此,当列出我的类时,我…

Jq_网站顶部定时折叠广告

<!DOCTYPE html><html xmlns"http://www.w3.org/1999/xhtml"><head><title>网页顶部定时收起广告jQuery特效 - HoverTree</title><base target"_blank" /><style>a {color:blue;text-decoration:none;}</sty…

fullgc频繁的原因_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定

处理过线上问题的同学基本上都会遇到系统突然运行缓慢&#xff0c;CPU 100%&#xff0c;以及Full GC次数过多的问题。当然&#xff0c;这些问题的最终导致的直观现象就是系统运行缓慢&#xff0c;并且有大量的报警。本文主要针对系统运行缓慢这一问题&#xff0c;提供该问题的排…

python 局域网扫描_Python 简化版扫描局域网存活主机

[code]Python 简化版局域网扫描获取存活主机IP by 郑瑞国1、ping指定IP判断主机是否存活2、ping所有IP获取所有存活主机#注: 若在Linux系统下 ping -n 改为 ping -c若在windows系统下 ping -n 不变import socketimport osimport threadingimport timeIPList []def ping_ip(ip)…

WEKA “Detailed Accuracy By Class”和“Confusion Matrix”含义

原文 Summary &#xff08;总结&#xff09;Correctly Classified Instances&#xff08;正确分类的实例&#xff09; 45 90 %Incorrectly Classified Instances &#xff08;错误分类的实例&#xff09; 5 10 %Kappa …

es删除数据_面试官是怎么来考察你对ES搜索引擎的理解?

来源:http://1t.click/ZdY一. 面试官心理分析问这个&#xff0c;其实面试官就是要看看你了解不了解 es 的一些基本原理&#xff0c;因为用 es 无非就是写入数据&#xff0c;搜索数据。你要是不明白你发起一个写入和搜索请求的时候&#xff0c;es 在干什么&#xff0c;那你真的是…

thinkphp mysql函数_thinkphp对数据库操作有哪些内置函数

getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,varsarray()) 动态切换模型table() 设置当前操作的数据表field() 设置要查询的数据字段where() 设置查询或者操作条件data(data) 设置数据对象order(order) 设置排序limit(limit)…

一个分布式服务器集群架构方案

0x01.大型网站演化 简单说&#xff0c;分布式是以缩短单个任务的执行时间来提升效率的&#xff0c;而集群则是通过提高单位时间内执行的任务数来提升效率。 集群主要分为&#xff1a;高可用集群(High Availability Cluster)&#xff0c;负载均衡集群(Load Balance Cluster&…

python数据预处理_Python数据预处理——缺失值、重复值

一、缺失值处理 isnull( ) 、fillna( ) 、dropna( )&#xff08;1&#xff09;查看缺失查看数据集缺失&#xff0c;返回每列的缺失个数 df.isnull().sum() 查看某字段有缺失的行 df[df.a.isnull()] 查看某字段每行的缺失情况&#xff1a;返回T/F&#xff1a;df.score.isnull() …

vb如何测试连接mysql_VB怎么连接访问Access数据库?

VB是我们常常会见到的一款可视化程序设计语言&#xff0c;它的功能十分强大&#xff0c;因此有很多人会使用它&#xff0c;但是有时候我们需要用到VB来连接Access数据库&#xff0c;但是却无从下手&#xff0c;那么VB怎么连接访问Access数据库呢&#xff1f;不懂的朋友请看以下…

pthread 简要使用指南

http://www.2cto.com/kf/201208/151995.html http://www.2cto.com/kf/201208/151997.html转载于:https://www.cnblogs.com/alanhu/p/4677399.html

textarea如何在文字后面_FLASH如何制作风吹文字的效果

使用动作补间动画可以制作各种各样的动态效果&#xff0c;树叶飘落、蝴蝶飞舞等。这里再使用引导层动画结合动作补间动画制作风吹文字飞起的效果。主要知识点&#xff1a;引导层动画、动作补间动画FLASH如何制作树叶飘落​jingyan.baidu.comFlash如何制作飞舞的蝴蝶​jingyan.b…

ef mysql 外键 一对一_EFCore-一对一配置外键小记2

前后两次遇到这样的错误&#xff1a;The property xx on entity type xxxx has a temporary value. Either set a permanent value explicitly or ensure that the database is configured to generate values for this property.多数情况下是表配置关系会出现这样的问题。我实…

矩阵快速幂 HDU3483

1 #include <iostream>2 #include <cstring>3 4 using namespace std;5 6 //矩阵大小上限7 const int SIZ100;8 int MOD;9 10 //矩阵大小为n*m&#xff0c;初始化全部为011 struct mat12 {13 int n,m;14 long long ar[SIZ][SIZ];15 mat()16 {17 …