pmccabe - 클라우드 온라인

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 pmccabe 명령입니다.

프로그램:

이름


pmccabe - McCabe 순환 복잡도 또는 C에 대한 비주석 라인 수를 계산하고
C++ 프로그램

개요


pmccabe [-bCdfFntTvV?] [파일(들)]

기술


pmccabe 명명된 파일 또는 명명되지 않은 경우 표준 입력을 처리합니다. 기본 모드에서
각 함수에 대한 McCabe 순환 복잡도를 포함한 통계를 계산합니다. 그만큼
파일은 C(ANSI 또는 K&R) 또는 C++여야 합니다.

-? 유익한 사용법 메시지를 인쇄하십시오.

-v 열 머리글 인쇄

-V 인쇄 pmccabe 버전 번호

주석 제거 모드
-d 다음과 같은 방법으로 주석 처리되지 않은 소스 행을 계산하는 데 도움이 됩니다.

pmccabe -d *.c | 그렙 -v '^[ ]*$' | 화장실 -l

댓글 삭제, CPP 지시문은 다음으로 대체됩니다. CPP, 문자열 리터럴은
~로 교체되다 문자열 리터럴, 문자 상수는 다음으로 대체됩니다. 문자 그대로. 그만큼
결과 소스 코드는 구문 분석하기가 훨씬 쉽습니다. 이것은 에 의해 수행되는 첫 번째 단계입니다.
pmccabe 파서가 더 간단해질 수 있습니다.

다른 옵션은 현명하게 작동하지 않습니다. -d.

라인 카운팅 모드
-n 주석 처리되지 않은 소스 행을 계산합니다. 출력 형식은 다음과 같습니다.
anac 원하는 경우 열 머리글과 총계를 요청해야 한다는 점을 제외하고는 프로그램입니다.
열 머리글을 추가하려면 -v. 합계를 원하면 추가 -t. 당신이 원하는 전부라면
합계 추가 -T.

복잡성 모드 (기본값)
-C 사용자 정의 출력 형식 - 사용하지 마십시오.

-c 원시 코드 대신 함수(및 파일)당 주석 처리되지 않은 비공백 라인을 보고합니다.
줄 수. 주의 사항 전처리기 ��ħ are 않습니다. 계산.

-b 이해하는 컴파일러 오류 찾아보기 도구와 호환되는 출력 형식
"클래식" 컴파일러 오류. 이 형식에 대한 숫자 정렬은 다음을 사용하여 가능합니다.

정렬 -n +1 -t%

-t 열 합계를 인쇄합니다. 총 줄 수는 *NOT*가 아닌 줄 수입니다.
주석 처리된 소스 라인 - "wc -l"에 의해 보고되는 것과 동일합니다.

-T 열 총계를 *만* 인쇄합니다.

-f 기능별 총계와 함께 파일별 총계를 포함합니다.

-F 기능별 총계가 아닌 파일별 총계를 인쇄합니다.

파싱
pmccabe 모두 무시 CPP 전처리기 지시문 - 복잡도 계산
전처리기가 코드를 엉망으로 만든 후의 복잡성이 아니라 코드의 모양입니다.
이것은 특히 중요합니다. getchar(3) 매크로로 확장
복잡성을 증가시킵니다.

산출 형성
다음 형식으로 발견된 각 함수에 대한 행이 표준 출력에 기록됩니다.

수정된 McCabe 순환 복잡성
| 전통적인 McCabe 순환 복잡성
| | # 함수의 문장
| | | 기능의 첫 번째 줄
| | | | # 함수의 라인
| | | | | 파일 이름(정의 줄 번호):함수
| | | | | |
5 6 11 34 27 gettoken.c(35): 매치파렌

열 1에는 (함수에 대해) 1을 더하여 계산된 순환 복잡도가 포함되어 있습니다.
의 발생 을 통한, if, 동안, 스위치, &&, ||?. "일반" McCabe 사이클로매틱과 달리
복잡성, switch 문의 각 사례는 추가 복잡성으로 계산되지 않습니다. 이것
스위치 문과 복잡성을 처리하는 것이 "정상적인" 측정보다 더 유용할 수 있습니다.
유지 보수 노력과 코드 난이도를 판단하기 위해.

열 2는 스위치와 관련하여 "일반적인" 방식으로 계산된 순환 복잡도입니다.
진술. 특히 열 1에서와 같이 계산되지만 각각 계산됩니다. 케이스 차라리
보다 스위치 테스트 노력을 판단하는 데 1열보다 더 유용할 수 있습니다.

열 3에는 문 개수가 포함됩니다. 각각의 발생을 더하여 계산됩니다. 을 통한,
if, 동안, 스위치, ?, 및 함수 내의 세미콜론. 한 가지 놀라운 점은
을 통한 명령문의 최소 명령문 수는 3개입니다. 이는 현실적입니다. 에 대한(A; B;
씨){...} 정말 속기입니다 A; 동안 (B) { ... 씨;}. 내의 진술 수
파일은 해당 파일 내에서 구현된 각 함수에 대한 명령문 수의 합계입니다.
파일, 그리고 각 함수에 대해 하나씩(함수도 명령문이기 때문에)
서로 파일 범위 문(일반적으로 선언)에 대해 하나씩.

열 4에는 함수의 첫 번째 줄 번호가 포함됩니다. 이것은 반드시 같은 것은 아니다
함수 이름이 나타나는 줄.

5열은 4열의 숫자부터
닫는 중괄호를 포함하는 줄.

마지막 열에는 파일 이름, 함수 이름이 나오는 줄 번호,
그리고 함수의 이름.

어플리케이션


의 명백한 적용 pmccabe 의 목록을 제공하는 다음과 같이 설명됩니다.
"상위 XNUMX개" 가장 복잡한 기능:

pmccabe *.c | 정렬 -nr | 머리 -10

많은 파일에는 둘 이상의 C 함수가 포함되어 있으며 때로는 추출하는 것이 유용할 수 있습니다.
각 기능은 별도로. 매치파렌() (위의 예제 출력 참조)에서 추출할 수 있습니다.
27행부터 34행을 추출하여 gettoken.c. 이것은 도구의 기초를 형성할 수 있습니다.
파일 대신 기능에서 작동(예: diff(1)).

진단


pmccabe 파일을 열 수 없고 발생하면 XNUMX이 아닌 종료 상태를 반환합니다.
일부 구문 분석 오류.

표준 오류에 대한 오류 메시지, 일반적으로 파서가 혼동하고 있음을 설명합니다.
무언가, 고전적인 C 컴파일러 오류 메시지를 모방합니다.

경고


pmccabe 일치하지 않는 중괄호 또는 괄호로 인해 혼동되는 경우가 있습니다.
성급한 사용 CPP 지시. 이러한 경우 진단이 인쇄되고 복잡성이
명명된 파일에 대한 결과는 신뢰할 수 없습니다. 대부분의 경우 "#ifdef" 지시어는
중괄호가 일치하도록 수정되었습니다. 만약 pmccabe 에 의해 혼동된다 CPP
지침, 가장 예쁜 프린터도 마찬가지입니다. 경우에 따라 전처리 유니프데프(1)
적절할 수 있습니다.

진술 계산은 틀림없이 다음과 같이 개선될 수 있습니다.
연산자, 다중 할당, 조건부 테스트 내의 할당 및 논리
접속사. 그러나 언어 또는 언어에서 명확한 진술 정의가 없기 때문에
내가 문의한 사람들로부터 진술 계산이 개선되지 않을 것입니다. 가지고 있다면
선명한 정의 기꺼이 고려하겠습니다.

템플릿 원인 pmccabe의 스캐너를 종료합니다.

부끄러운 일이야 c태그 출력이 제공되지 않습니다.

onworks.net 서비스를 사용하여 온라인으로 pmccabe 사용



최신 Linux 및 Windows 온라인 프로그램