Lint의 기원
// 4.c
#include <string.h>
int main(void) {
char *s = "0124";
s[ 3 ] = '4';
s[ -1 ] = '4';
s[ strlen(s) ] = '4';
return 0;
}
- 문제점을 모두 짚고 이유를 설명합니다.
- 문제가 없도록 고친 코드
4-1.c
를 만듭니다. - 한 줄씩 돌리면서 결과를 차례대로 설명하세요. 앞서 짚었던 문제점을 모두 잡아내나요?
cc 4.c && ./a.out
cc -Wall -Wextra 4.c
c++ 4.c
cppcheck 4.c
flawfinder 4.c
4-1.c
로 같은 실험을 되풀이합니다.- 문제가 없도록 고치세요. 문제를 잡아내는 데 도구가 도움이 되나요? 도구는 서로 어떻게 다른가요?
귀띔
프로그래밍 언어의 설계와 구현에는 헛점이 많습니다. 여러 분석 도구를 쓰면 언어와 코드의 문제를 정확하게 이해하여 안전하고 틀이 잡힌 코드 쓰는 데 보탬이 됩니다.
마지막으로 고친 날