| HOME / 정보공유 / AIX 명령어 모음

lint
lint lint 명령 목적 C 및 C++ 언어 프로그램에 문제점이 있는지 검토합니다. 구문
lint [ -a] [ -b ] [ -c ] [ -C ] [ -h ] [ -lKey ] [ -n ] [ -oLibrary ] [ -qDBCS ] [ -p ] [ -t ] [ -u ] [ -v ] [ -w Class [Class ... ] ] [ -x ] [ -MA ] [ -NdNumber ] [ -NlNumber ] [ -NnNumber ] [ -NtNumber ] [ -IDirectory ] [ -DName [=Definition ] ] [ -UName ] File ...
설명
lint 명령은 C와 C++ 언어 소스 코드에 코딩 및 구문 오류가 있는지 비효율적인 코드나 이식 가능하지 않은 코드가 있는지를 검토합니다. 이 프로그램을 사용하여 다음을 수행할 수 있습니다.
소스 코드와 라이브러리의 비호환성 식별
유형 검토 규칙을 컴파일러에서 보다 더 엄격하게 시행
변수에 대한 잠재적 문제점 식별
함수에 대한 잠재적 문제점 식별
흐름 제어 문제점 식별
오류를 발생시키거나 비효율적인 구조 식별
미사용 변수 및 함수 선언 식별
이식 불가능한 코드 식별
주: lint 명령으로 C++ 언어 파일을 검토하려면 C Set++ 컴파일러 패키지가 필요합니다.
함수의 파일간 사용을 검토하여 다른 인스턴스에는 값을 리턴하지 않고 일부 인스턴스에만 값을 리턴하는 함수, 여러 가지 인수의 번호 또는 유형으로 호출되는 함수, 값이 사용되지 않거나 값은 사용되지만 리턴되지 않는 함수를 찾습니다.
lint 명령은 파일 이름 확장자를 다음과 같이 해석합니다.
.c로 끝나는 File 이름은 C 언어 소스 파일입니다.
.C로 끝나는 File 이름은 C++ 언어 소스 파일입니다.
.In으로 끝나는 File 이름은 -c 또는 -o 플래그가 사용될 때 Iint 명령이 작성하는 ASCII가 아닌 파일입니다.
lint 명령은 다른 접미사가 붙은 파일에 대해 경고하고 그것들을 무시합니다.
lint 명령은 .c, .C, .ln 파일과 -l 플래그에 지정된 라이브러리를 취하여 명령행에 나타나는 순서대로 처리합니다. 디폴트로, 표준 llib-lc.ln lint 라이브러리를 파일 리스트의 끝에 추가합니다. 그러나, -p 플래그를 선택하면, lint 명령은 llib-port.ln 이동 가능한 라이브러리를 사용합니다. 디폴트 값으로 lint의 두 번째 패스는 상호 호환성에 대해 이 파일 리스트를 확인합니다. 그러나 -c 플래그를 지정하는 경우 .ln 및 llib-lx.ln 파일은 무시됩니다.
-c 및 -o 플래그는 C 및 C++ 언어 소스 파일세트에서 lint 명령의 증분식 사용을 허용합니다. 일반적으로, lint 명령을 -c 플래그와 함께 각 소스 파일에 대해 한 번씩 사용하십시오. 이 소스 파일 각각은 .c 파일에 .ln 파일 생성을 수행하고, 해당 소스 파일에 관한 모든 메세지를 기록합니다. lint 명령을 통해 별도로 모든 소스 파일을 수행하고 나면, -c 플래그 없이 이를 여러 번 수행하여 필요한 -l 플래그와 함께 모든 .ln 파일을 나열합니다. 이것은 모든 파일간 불일치를 기록합니다. 이 프로시저는 make 명령으로 제대로 작동하여 소스 파일세트가 마지막으로 검사된 이후로 수정된 소스 파일에 대해서만 lint 명령을 수행할 수 있게 합니다.
lint 및 LINT 프리프로세서 기호는 의심되는 코드를 lint 명령을 대신하여 변경하거나 제거할 수 있도록 정의됩니다. 따라서, lint 및 LINT 기호를 lint가 검토할 모든 코드에 대한 예약어로 여겨야 합니다.
C 및 C++ 언어 소스 프로그램에서 다음 주석은 소스 프로그램을 검토할 때 lint 명령이 조작하는 방법을 변경합니다.
/*NOTREACHED*/ 도달할 수 없는 코드에 대한 주석을 억제합니다.
/*VARARGSNumber*/ 여러 가지 인수의 번호에 대한 다음의 구식 함수 선언 검토는 억제하지만, Number 인수의 데이터 유형은 검토합니다. Number에 대한 값을 포함시키지 않으면, lint 명령은 인수를 검토하지 않습니다(Number=0). ANSI 함수 원형은 말줄임표를 사용하여 주석 메카니즘 대신에 명기하지 않은 매개변수를 나타내야 합니다.
/*ARGSUSED*/ 함수 정의 내에서 사용되지 않는 함수 매개변수에 관한 경고를 억제합니다.
/*LINTLIBRARY*/ 이 주석을 파일의 시작부분에 놓으면 lint 명령이 파일에서 사용되지 않는 함수와 함수 매개변수를 식별하지 않습니다. 라이브러리에서 lint 명령을 수행 중일 때 사용됩니다.
/*NOTUSED*/ 발생 위치에서 시작하는 파일 내에 사용하지 않은 외부 기호, 함수 및 함수 매개변수에 대한 경고를 억제합니다. 이것은 /*LINTLIBRARY*/ 주석 지시문의 수퍼세트이지만, 외부 기호에도 적용됩니다. 사용하지 않은 함수 원형 및 기타 외부 오브젝트 선언에 대한 경고 억제에 유용합니다.
/*NOTDEFINED*/ 발생 위치에서 시작하는 파일 내에 사용은 되지만, 정의되지 않은 외부 기호 및 함수에 대한 경고를 억제합니다.
/*LINTSTDLIB*/ 함수 원형 선언을 함수 정의로 나타나도록 하여 표준 원형 검토 라이브러리를 헤더 파일로부터 형성할 수 있습니다. 이 지시문은 /*NOTUSED*/ 및 /*LINTLIBRARY*/ 주석 지시문을 함축적으로 활성화하여 경고 잡음 레벨을 줄입니다.
lint 명령 경고 메세지는 파일 이름과 행 번호를 제공합니다. 각 파일이 최초 패스를 통과할 때, 각 파일과 각 행 번호에 대한 경고를 기록합니다.
-c 플래그를 지정하지 않으면, lint 명령은 모든 입력 파일로부터 정보를 수집하여 정보가 일관되는지 검사합니다. 이 시점에서, 메세지가 주어진 소스 파일에서 제공된 것인지 아니면 포함된 파일 중 하나로부터 제공된 것인지의 여부가 불분명하면, lint 명령은 소스 파일 이름에 물음표를 붙여서 표시합니다.
많은 표준 헤더 파일을 포함하는 ANSI 프로그램은 -wD 플래그를 설정하여 사용되지 않은 원형에 대한 경고의 수를 줄이고 -n 플래그를 설정하여 ANSI 표준 라이브러리에 대한 검토를 사용 불가능하합니다. 비ANSI 프로그램의 경우, -wk 플래그를 지정하여 함수 원형 부재와 관련된 경고의 수를 줄이는 것이 좋습니다.
플래그
-a long이 아닌 변수에 long 값을 지정했다는 메세지를 억제합니다.
-b 도달할 수 없는 중단문에 대한 메세지를 억제합니다.
-c lint 명령이 명령 행의 모든 .c 파일에 대한 .ln 파일을 작성하게 합니다. .ln 파일은 lint 명령의 최초 패스에서만 생성되며 함수간 호환성에 대해 검토되지 않습니다.
-C C++ 라이브러리(/usr/lpp//xlC/lib 디렉토리)를 사용하도록 지정합니다.
-h 버그나 부적절한 스타일을 발견하거나 낭비를 줄이려고 시도하지 않습니다.
-lKey 추가 llib-lKey.ln lint 라이브러리를 포함시킵니다. 명령행에 -lm을 지정하여 llib-lm.ln math 라이브러리의 lint 버전을 포함시키거나 명령행에 -ldos 플래그를 지정하여 llib-ldos.ln 라이브러리의 lint 버전을 포함시킬 수 있습니다. 이 플래그를 사용하여 많은 파일이 있는 프로젝트의 일부인 파일을 검토할 때 국지 lint 라이브러리를 포함시키십시오. 이 플래그는 lint 명령이 llib-lc.ln 라이브러리를 사용을 방해하지는 못합니다. lint 라이브러리는 /usr/ccs/lib 디렉토리에 있어야 합니다.
-n 표준 또는 이동 가능 lint 라이브러리와의 호환성에 대한 검토를 억제합니다. ANSI 및 확장 모드 라이브러리에 적용됩니다.
-oLibrary lint 명령이 llib-lLibrary.ln lint 라이브러리를 작성하게 합니다. -c 플래그는 -o 플래그의 사용을 무효화합니다. 작성된 lint 라이브러리는 lint 명령의 두 번째 패스에 제공되는 입력입니다. -o 플래그는 간단히 이 파일이 이름 지정된 lint 라이브러리에 저장되도록 합니다. 메세지 없이 llib-lLibrary.ln을 작성하려면, -x 플래그를 사용하십시오. -v 플래그는 lint 라이브러리에 대한 소스 파일이 외부 인터페이스인 경우에 유용합니다(예: llib-lc 파일이 작성되는 방법). 이러한 플래그 설정은 lint 명령 주석 행을 사용하여 사용할 수 있습니다.
-p 기타 C 언어의 이동 가능성에 대해 검토합니다.
-t 32 비트에서 64 비트로 이동할 때 문제가 되는 지정이 있는지 검토합니다. 다음 경우만을 검토합니다.
일부 32 비트에서는 잘 작동하는 작업이 64 비트에서는 문제를 일으킬 수 있으므로, 모든 시프트 / 마스크 조작이 플래그됩니다.
다음 유형의 지정에 경고가 주어집니다.
int = long
int = ptr
-u 사용되지만 정의되지 않았거나, 정의되었지만 사용되지 않는 함수 및 외부 변수에 대한 메세지를 억제합니다. 이 플래그를 사용하여 lint 명령을 더 큰 프로그램 파일의 서브세트에서 수행하십시오.
-v 사용되지 않은 함수 매개변수에 대한 메세지를 억제합니다.
-wClass[Class...] 경고 클래스에 대한 보고를 제어합니다. 모든 경고 클래스는 디폴트에 따라 활동하지만, Class 인수의 일부로 적절한 옵션을 포함시켜 개별적으로 해제할 수 있습니다. 개별 옵션은 다음과 같이 나열됩니다.
a
비ANSI 피처
c
unsigned 값과 비교
d
선언 일관성
h
경험적 표준안
k
K+R 유형 소스 코드에 사용
l
long이 아닌 변수에 long 값을 지정
n
Null-효과 코드
o
알려지지 않은 평가 순서
p
다양한 이식가능성 고려사항
r
리턴 명령문 일관성
s
기억영역 용량 검토
u
변수 및 함수의 적절한 사용법
A
모든 경고 해제
C
조건부로 발생하는 상수
D
외부 선언을 결코 사용하지 않습니다.
O
더이상 사용되지 않는 피처
P
함수 원형 존재
R
도달할 수 없는 코드 검출
-x 외부 선언을 갖지만, 결코 사용되지 않은 변수에 대한 메세지를 억제합니다.
-MA ANSI C 언어 표준 규칙을 시행합니다. 디폴트 모드는 확장 C 모드와 같습니다. ANSI 모드는 표준 ANSI 라이브러리 함수 원형을 디폴트 확장 모드 C lint 라이브러리 대신에 고려합니다. ANSI 모드는 더 엄격한 파일간 오브젝트 참조사항을 시행하며 정의 연결 검토를 제공합니다.
-NdNumber 배열 차원 테이블 크기를 Number로 변경합니다. Number의 디폴트 값은 2000입니다.
-NlNumber 유형 노드 수를 Number로 변경합니다. Number의 디폴트 값은 8000입니다.
-NnNumber 기호 테이블의 크기를 Number로 증가시킵니다. Number의 디폴트 값은 1500입니다.
-NtNumber 유형 tree 노드 수를 Number로 변경합니다. Number의 디폴트 값은 1000입니다.
그 밖에도, lint 명령은 cpp 명령(매크로 프리프로세서)의 다음 플래그를 인식합니다.
-I Directory Directory를 lint 명령이 #include 파일을 탐색하는 디렉토리 리스트에 추가합니다.
-DName[=Definition] #define 파일에서 처럼 Name을 정의합니다. Definition의 디폴트는 값은 1입니다.
-qDBCS 현재 로케일에 의해 지정된 복수 바이트 모드를 설정합니다.
-UName Name의 초기 정의를 제거합니다. 여기서 Name은 특정 프리프로세서가 사전정의한 예약된 기호입니다.
종료 상태
이 명령은 다음과 같은 종료 값을 리턴합니다.
0 성공적으로 완료되었습니다.
>0 오류가 발생했습니다.
예제
오류가 있는지 C 프로그램을 검토하려면, 다음을 입력하십시오.
lint command.c
일부 메세지를 억제하려면, 다음을 입력하십시오.
lint -v -x program.c
program.c를 검사하지만, 사용되지 않는 함수 매개변수(-v) 또는 사용되지 않는 외부 매개변수(-x)에 대한 오류 메세지는 표시하지 않습니다.
추가 lint 라이브러리에 대해 프로그램을 검토하려면, 다음을 입력하십시오.
lint -lsubs program.c
program.c를 /usr/ccs/lib/llib-lc.ln 표준 lint 라이브러리와 /usr/lib/llib-lsubs.ln lint 라이브러리에 대해 둘다 검토합니다.
이동 가능한 라이브러리와 추가 라이브러리에 대한 검토를 하려면, 다음을 입력하십시오.
lint -lsubs -p program.c
이는 program.c를 /usr/ccs/lib/llib-port.ln 이동 가능 lint 라이브러리와 /usr/lib/llib-lsubs.ln lint 라이브러리에 대해 둘다 검사합니다.
비표준 라이브러리만 검토하려면, 다음을 입력하십시오.
lint -lsubs -n program.c
program.c를 /usr/lib/llib-lsubs.ln에 대해서만 검사합니다.
파일
/usr/lib/lint[12} 프로그램
/usr/ccs/lib/llib-lansi 표준 ANSI 함수(소스) 선언
/usr/ccs/lib/llib-lansi.ln 표준 ANSI 함수(2진 형식) 선언
/usr/ccs/lib/llib-lc 표준 함수(소스) 선언
/usr/ccs/lib/llib-lc.ln 표준 함수(2진 형식) 선언
/usr/ccs/lib/llib-lcrses curses 함수(소스) 선언
/usr/ccs/lib/llib-lcrses.ln curses 함수(2진 형식) 선언
/usr/ccs/lib/llib-lm 표준 math 함수(소스) 선언
/usr/ccs/lib/llib-lm.ln 표준 math 함수(2진 형식) 선언
/usr/ccs/lib/llib-port 이동 가능 함수(소스) 선언
/usr/ccs/lib/llib-port.ln 이동 가능 함수(2진 형식) 선언
/usr/lpp//xlC/lib C++ 라이브러리를 포함하는 디렉토리
/var/tmp/*lint* 임시 파일
관련 정보
cpp 명령, make 명령