2017-04-05 1 views
0
#include<stdio.h> 
#include <stdlib.h> 

int test() { 
    const char* s = getenv("CNU"); 
    if (s!=NULL) 
    return 1; 
    else 
    return -1; 
} 

int main() { 
    test(); 
    // some C code.. 
    return 0; 
} 

Befehle, die ich für Coverity-Analyse verwenden:Warum zeigt Coverity in meinem Programm nicht CHECKED_RETURN?

cov-build --dir Cov.build gcc test.c 
cov-analyze --dir Cov.build --aggressiveness-level high --enable-callgraph-metrics --all 

Bericht:

Analysis summary report: 
------------------------ 
Files analyzed     : 1 
Total LoC input to cov-analyze : 10926 
Functions analyzed    : 2 
Paths analyzed     : 6 
Time taken by analysis   : 00:00:01 
Defect occurrences found  : 0 

Über CHECKED_RETURN: https://ondemand.coverity.com/reference/7.6.1/en/coverity

Antwort

1

Die CHECKED_RETURN checker ist ein statistisches ch ecker - es sucht nach Beispielen, in denen der Rückgabewert überprüft wird, und wenn ein statistisch signifikanter (konfigurierbarer) Schwellenwert erreicht wird, werden Fehler für Standorte ausgegeben, an denen Sie den Rückgabewert nicht überprüfen können.

Wenn Sie es wollen immer einen Fehler ausgeben, wenn Sie nicht den Rückgabewert überprüfen, dann müssen Sie __coverity_always_check_return__() hinzufügen, wie im Beispiel in der Dokumentation gezeigt Ihnen verbunden:

int always_check_me(void) { 
    __coverity_always_check_return__(); 
    return rand() % 2; 
} 

int main(int c, char **argv) { 
    always_check_me(); #defect#checked_return 
    // the statement above is a defect because the value is not checked 
    cout << "Hello world" << endl; 
} 

Aus offensichtlichen Gründen , Sie müssen auch einen Funktionsstummel dafür für die Quelle zu kompilieren (auch in der Dokumentation erwähnt). Wenn Sie den Code nur für Coverity live schalten möchten, können Sie ihn mit #if __COVERITY__ schützen.

0

Ja, CHECKED_RETURN ist ein statistischer Checkerfehler. Wenn Sie den Rückgabewert von test() an 10 Stellen überprüfen, dann auf Platz 11, wenn Sie es versäumen, den Rückgabewert von test() zu überprüfen, gibt Coverity den Fehler CHECKED_RETURN zurück. Ans zeigt die Statistik an, wie viele Orte die Gesamtnutzung überprüft hat.

Verwandte Themen