zoukankan      html  css  js  c++  java
  • 软件测试中不可忽视的 Warning

    这篇博客旨在强调软件测试开发过程中Warning的重要性

    软件开发过程中,软件开发人员常常重视error而忽视warning,然而warning却能为我们提供更为重要的关于软件日后稳定性健壮性的信息

    下面我就以一个小例子来和大家分享我对warning的理解

    //test.c

    #include<stdio.h>
    int main(void)
    {

    char buff[10];
    memset(buff,0,sizeof(buff));
    gets(buff);
    printf(" The buffer entered is [%s] ",buff);
    return 0;
    }

    这是一点简单的c语言程序,linux下运行后功能是让用户输入一串字符床并输出显示用户的输入信息。但编译时会出现两个warning

    warning如下:

    • 第一个warning

    incompatible implicit declaration of built-int function 'memset’是说函数memset没有明确定义,那么就隐试定义。编译时库里有这个函数就不会出错。然而这样做是危险的,例如库里的函数不是的想要的函数,他实现的功能与你想要的不一致那么出错就很难发现也很难理解,所以函数都应该被明确定义。

    对于此例添加#include<string>.h 便可消除warning

    • 第二个warning

    'gets' is deprecated gets函数已经被弃用原因是 

    如果你有这样的code:

    char s[10];
    gets( s );

    当程序运行的时候你输入了超过10个字符,你就会是buffer溢出,造成undefined behaviour。gets() 函数不能防止你输入数量越界,因此gets()函数给弃用。用来代替的可以用fgets()函数, 这个函数可以限制你的字符输入数量,防止buffer溢出:

    char s[10];
    fgets( s, 10, stdin );


    //test.c

    修改后的code:

    #include<stdio.h>

    #include<string.h>
    int main(void)
    {

    char buff[10];
    memset(buff,0,sizeof(buff));
    fgets(buff,10,stdin);
    printf(" The buffer entered is [%s] ",buff);
    return 0;
    }

    编译正常,没有warning。

    谨以此片博客为大家提示warning的重要性,以及在保证软件稳定性健壮性是的重要性,希望对大家以后的编程中有所帮助。

  • 相关阅读:
    150个JS特效脚本
    .sql文件被加密恢复
    Alpha865qqz.id 加密数据库恢复
    最新incaseformat 病毒删除文件恢复
    Oracle MISSING00000文件故障恢复
    asm 磁盘分区丢失恢复----惜分飞
    oracle数据文件0kb恢复
    ORA-600 16703--oracle介质被注入恶意脚本
    GANDCRAB病毒oracle数据库恢复
    文件系统损坏,oracle数据库恢复
  • 原文地址:https://www.cnblogs.com/EDzhang/p/4337847.html
Copyright © 2011-2022 走看看