这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

c++test 编程规则的等级

上一篇 / 下一篇  2008-05-19 15:53:05 / 个人分类:C++test

c++test v7.1自带了851条c/c++编程规则,其中囊括了著名的《Effective C++》、MISRA-c以及MISRA-c:2004等。

这851条编程规则并不是完全“平等”的,按照严重等级,划分为5个不同的级别。每个c++test规则都被分配了一个级别。这个严重等级表示的是在违反该规则的情况下,可能导致缺陷发生的严重程度,如较差的性能、内存泄漏、安全漏洞等等。下面是这5个级别。

• Severe Violation (SV) - Level 1 (严重违例)

• Possible Severe Violation (PSV) - Level 2 (可能严重违例)

• Violation (V) - Level 3 (违例)

• Possible Violation (PV) - Level 4 (可能违例)

• Informational (I) - Level 5 (提醒)

这5个级别中,level 1最严重,意味着如果违反了level 1级别的规则,90%以上的可能是一个真正的BUG。例如 MRM-24-1 Never return a reference to a local object.以下的代码就违反了level 1级别的规则,而这个违例会导致代码真正的错误。

int* foo( ) {
    int i;
    return &i; // Violation
}
int& bar( ) {
    int i;
    return i;  // Violation
}

level 2 次之,level 2级别的规则强调更安全的编码方式。虽然这种编码不一定会真出错,但它比较危险,容易出错或者容易引发安全漏洞。如Avoid using unsafe string functions which may cause buffer overflows [SECURITY-12-2]

#include <string.h>

void test()
{
    char buffer[16];
    strcpy(buffer, "To be ");              // Violation
    strcat(buffer, "or not to be");        // Violation
}

依次类推,level 5级别的规则一般只是一个提醒,排版类、命名类一般属于这个级别。

通常情况下,整个团队实施统一的编程规范需要一个循序渐进的过程,不能一蹴而就。本人在这方面的经验表明,要真正的想贯彻实施编程规则,只能一步步来,第一步只能先使用最重要的规则,会直接导致错误发生的规则,如level 1级别。等level 1级别的规范实施了一段时间,所有程序员已经习惯了的时候,可以再考虑加上level 2级别的规则。慢慢来!

虽然说c++test提供了851条编程规则,可以满足大多数团队和项目的需求,但如果说您需要的某条特殊的规则没有包含在这851条中,c++test还提供了RuleWizard,您可以用图形化的表示方式自定义新的规则。有关RuleWizard的试用,本博会在以后某个时间发布。

 


TAG:

 

评分:0

我来说两句

Open Toolbar