Lint의 기원

Lint의 기원

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

    char *s = "0124";

    s[ 3 ] = '4';
    s[ -1 ] = '4';
    s[ strlen(s) ] = '4';

    return 0;
}
  1. 문제점을 모두 짚고 이유를 설명합니다.
  2. 문제가 없도록 고친 코드 4-1.c를 만듭니다.
  3. 한 줄씩 돌리면서 결과를 차례대로 설명하세요. 앞서 짚었던 문제점을 모두 잡아내나요?
    1. cc 4.c && ./a.out
    2. cc -Wall -Wextra 4.c
    3. c++ 4.c
    4. cppcheck 4.c
    5. flawfinder 4.c
  4. 4-1.c로 같은 실험을 되풀이합니다.
  5. 문제가 없도록 고치세요. 문제를 잡아내는 데 도구가 도움이 되나요? 도구는 서로 어떻게 다른가요?
귀띔

프로그래밍 언어의 설계와 구현에는 헛점이 많습니다. 여러 분석 도구를 쓰면 언어와 코드의 문제를 정확하게 이해하여 안전하고 틀이 잡힌 코드 쓰는 데 보탬이 됩니다.

공부 거리
마지막으로 고친 날