Splint (programmeringsværktøj) - Splint (programming tool)

Skinne
Udvikler (er) Skinneudviklerne
Stabil udgivelse
3.1.2 / 12. juli 2007 ; 14 år siden ( 2007-07-12 )
Depot github .com /splintchecker /splint
Operativ system På tværs af platforme
Type Statisk kode analyse
Licens GPL
Internet side www .splint .org

Splint , en forkortelse for Secure Programmering Lint , er et programmeringsværktøj til statisk kontrol C-programmer af sikkerhedsmæssige sårbarheder og kodning fejl. Tidligere kaldet LCLint, det er en moderne version af Unix fnug værktøj.

Splint har evnen til at fortolke særlige kommentarer til kildekoden , hvilket giver den en stærkere kontrol end det er muligt bare ved at se på kilden alene. Splint bruges af gpsd som en del af et forsøg på at designe for nul defekter.

Splint er gratis software frigivet under betingelserne i GNU General Public License .

Hovedudviklingsaktiviteten på Splint stoppede i 2010. Ifølge CVSSourceForge var den seneste ændring i depotet i september 2012 i november 2010. Et Git -depot på GitHub har nyere ændringer, der starter i juli 2019.

Eksempel

#include <stdio.h>
int main()
{
    char c;
    while (c != 'x');
    {
        c = getchar();
        if (c = 'x')
            return 0;
        switch (c) {
        case '\n':
        case '\r':
            printf("Newline\n");
        default:
            printf("%c",c);
        }
    }
    return 0;
}

Splint's output:

Variable c used before definition
Suspected infinite loop. No value used in loop test (c) is modified by test or loop body.
Assignment of int to char: c = getchar()
Test expression for if is assignment expression: c = 'x'
Test expression for if not boolean, type char: c = 'x'
Fall through case (no preceding break)

Fast kilde:

#include <stdio.h>
int main()
{
    int c = 0;  // Added an initial assignment definition.

    while (c != 'x') {
        c = getchar();  // Corrected type of c to int
        if (c == 'x') // Fixed the assignment error to make it a comparison operator.
            return 0;
        switch (c) {
        case '\n':
        case '\r':
            printf("Newline\n");
            break;  // Added break statement to prevent fall-through.
        default:
            printf("%c",c);
            break;  //Added break statement to default catch, out of good practice.
        }
    }
    return 0;
}

Se også

Referencer

eksterne links