COBOT 2.7.4 添加QT规则

作者:彭婷

COBOT2.7.4添加对QT的环境支持,新增18QT规则,支持QT4QT5两个版本。此版本还为用户提供了VS2008插件版,帮助开发人员更好的使用使用COBOT工具。此外,此版本还提供了完善的缺陷管理机制,用户可从SVN自动更新代码,并且可以查看历史缺陷,以及对缺陷状态进行标记,帮助测试人员和管理人员更好的追踪缺陷以及管理缺陷。

Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。 它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的, 很容易扩展,并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的 Linux桌面环境KDE 的基础。 基本上,Qt X Window 上的 MotifOpenwinGTK 等图形界 面库和 Windows 平台上的 MFCOWLVCLATL 是同类型的东西,但Qt具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档等优点。

随着QT应用范围的增广QT代码的安全性也得到了越来越多人的关注,COBOT2,7,4版本新增QT编码规则支持,主要从类继承,QT宏和线程等方面保证QT代码的安全性。

新增的QT规则如下:

QT-01

每一个 QObject 子类必须包含一个 Q_OBJECT 宏

QT-02

QObject 不能被同一子类继承超过一次

QT-03

只能将一个信号与一个插槽 slot 连接或者将一个信号与另一个信号连接

QT-04

SIGNAL 和 SLOT 宏里的方法必须存在

QT-05

使用关键字 "emit" 标示信号量(signal emissions),以区别从普通方法调用的信号量

QT-06

不能将 QThreads 的优先级设置为 Idle 或者 Critical,只能设置成 High/Low/Med

QT-07

不要通过访问 QThread::terminate() 强迫终止线程

QT-08

如果在某函数中使用互斥锁,应由同一个函数进行释放

QT-09

针对 QMutexLocker 不要使用 new

QT-10

为任何带有指针的 Qt 继承对象声明拷贝构造函数和重载赋值操作符

QT-11

不能在 Widget 上使用 setWindowFlags 函数

QT-12

不要直接设置某个在 Qt 内核中设置的 Widget 属性

QT-13

禁止在赋值语句中混合常量和非常量循环符

QT-14

使用 Q_DECLARE_FLAGS 时,必须同时使用 Q_DECLARE_OPERATORS_FOR_FLAGS

QT-15

Q_DECLARE_OPERATORS_FOR_FLAGS 必须位于全局命名空间,Q_DECLARE_FLAGS 应位于 enum 的命名空间

QT-16

必须有针对 Q_PROPERTY 的获取(getters)和设置(setters)操作,类型必须匹配

QT-17

枚举(enum)类型的属性必须使用 Q_ENUMS

QT-18

不能对 Qt 对象调用非常量函数