CoBOT 2.7.4 添加QT规则

作者:彭婷

      COBOT2.7.4添加对QT的环境支持,新增18条QT规则,支持QT4和QT5两个版本。
      Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。 它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的, 很容易扩展,并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的 Linux桌面环境KDE 的基础。 基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但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 对象调用非常量函数