이는 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 명령 복잡성입니다.
프로그램:
이름
복잡성 - C 소스의 복잡성 측정
개요
복잡성 [-깃발] [-깃발 [가치]] [--옵션 이름[[=| ]가치]] [ ... ]
이 프로그램이 작동하는 피연산자는 명령줄이나
한 줄에 하나씩 표준 입력에서 읽습니다. 해당 입력에서 선행 및 후행 공백
제거되고 빈 줄은 무시됩니다. 표준 입력은 터미널이 아닐 수 있습니다.
코드 통과 경로 수뿐만 아니라 소스 코드의 복잡성을 계산합니다.
또한 로직 레벨 중첩을 통해 라인 수를 증폭합니다.
주석이 아닌 소스의 줄 수를 세고 다음을 곱하여 코드의 복잡성을 계산합니다.
중첩된 논리 가중치 인자. 기본적으로 1.9입니다.
기술
각 명령문의 가중치는 명령문이 사용하는 행 수입니다. 이 값은
각 로직 레이어에 대해 중첩된 로직 가중치(기본적으로 1.9)를 곱합니다. 을 위한
예를 들어, 이 스니펫은 다음과 같습니다.
경우 (푸) {
if (바) {
뒤죽박죽; 바즈;
}
}
점수는 11이 됩니다. 이 점수는 대략적으로 조정됩니다. pmccabe 20으로 나눈 결과
그리고 반올림. 마지막에 "1"의 점수를 얻습니다. pmccabe 간단한 절차에서 더 높은 점수를 얻습니다.
복잡성 더 깊게 중첩된 논리를 사용하면 더 높은 점수를 얻습니다.
점수를 조정하여 조정할 수 있습니다. --중첩 페널티 및 --규모-ing 요인.
수백만 라인의 평균 결과를 비교하여 기본값을 보정했습니다.
결과가 포함된 코드 pmccabe.
이 프로그램의 목적을 위해 절차는 이름과 그 뒤에 오는 기호로 식별됩니다.
괄호로 묶인 표현식과 여는 중괄호. 닫히는 곱슬머리로 끝나요
열 1에 중괄호를 입력합니다.
이 프로그램은 명령줄에 명명된 모든 파일 또는 모든 파일에 대해 기능을 수행합니다.
stdin에서 읽은 목록에 이름이 지정된 파일. 인수 또는 입력 이름은 기존에 있어야 합니다.
파일. 입력 목록에는 주석이 포함될 수 있습니다. 주석은 다음으로 시작하는 빈 줄 또는 줄입니다.
'#' 문자.
옵션
-t 최저한의, --한계점=최저한의
보고 기준. 이 옵션은 정수를 인수로 사용합니다. 그만큼
디폴트 값 최저한의 이 옵션의 경우:
30
이 임계값보다 낮은 복잡성 측정값을 갖는 절차는 무시합니다. 기본적으로,
30 미만의 복잡성 점수는 인쇄되지 않습니다. 그러나 히스토그램과
통계는 인쇄되지만 개별 절차 점수는 인쇄되지 않습니다.
XNUMX으로 설정됩니다. 이 한도 미만의 절차는 통계에 포함되지 않습니다.
--끔찍한 임계값=최저한의
종료 임계값이 XNUMX입니다. 이 옵션은 정수를 인수로 사용합니다. 그만큼
디폴트 값 최저한의 이 옵션의 경우:
100
어떤 프로시저의 점수가 이 임계값보다 높으면 프로그램은 종료되지 않습니다.
영. (4/COMPLEX_EXIT_HORRID_FUNCTION, 다른 문제가 발생하지 않는 경우.)
기본적으로 이 프로그램은 하나의 함수가 다음의 끔찍한 점수를 초과하지 않는 한 XNUMX으로 종료됩니다.
100.
-n 인자, --중첩 페널티=인자
중첩된 코드에 대한 점수 승수.
언어 구조는 더 깊게 중첩될수록 더 큰 비중을 차지합니다. 에 의해
기본적으로 각 레이어는 1.9배로 페널티를 받습니다. 옵션 인수는
부동 소수점 수. 페널티는 1일 수 있지만 그 이하일 수는 없습니다.
--반 중첩 페널티=인자
중첩된 표현식에 대한 점수 승수입니다.
기본적으로 이 값은 1.0과 중첩 페널티 사이의 중간입니다.
(특히 중첩 페널티의 제곱근) 그것은 다음을 가리킨다.
괄호로 묶인 하위 표현식. 예를 들어
((a > b) && (c > d))
괄호 안에 두 개의 하위 표현식이 포함되어 있습니다. 이렇게 하면 3.5포인트가 계산됩니다. 에
반면에 이것은:
(a > b && c > d)
두 개의 관계 연산자와 동일한 수준의 논리 연산자가 포함되어 있습니다. 이것들
중첩된 개수는 함께 곱해지고 산출됩니다. 2.5 * 2.5및 6.25. 하지 마세요
저것. 같은 수준에 논리적 and와 or가 있으면 상황은 더욱 악화됩니다.
-s 인자, --규모=인자
복잡성 배율 인수. 이 옵션은 정수를 인수로 사용합니다.
기본적으로 스케일링은 원시 점수를 20으로 나누는 20입니다.
대략적으로 일치하도록 정규화되었습니다. pmccabe 점수:
0-9 유지관리가 쉬운 코드.
10-19 거의 문제없이 유지됩니다.
20-29 약간의 노력으로 유지됩니다.
30-39 코드를 유지 관리하기가 어렵습니다.
40-49 코드를 유지 관리하기가 어렵습니다.
50-99 유지 관리할 수 없는 코드입니다.
100-199 미친 만들기 어려운 코드.
200+ 농담이었으면 좋았을 텐데요.
점수 | ln-ct | NC-lns| 파일 이름(줄): proc 이름
4707 3815 2838 lib/vasnprintf.c(1747): 바스프린트프
-h, --히스토그램, --히스토그램 없음
복잡도 수치의 히스토그램을 표시합니다. 그만큼 히스토그램 없음 양식이 비활성화됩니다
옵션. 이 옵션은 환경 변수 또는
초기화(rc) 파일.
각 함수의 점수를 인쇄하는 대신 마지막에 요약이 인쇄됩니다.
특정 점수 범위를 갖는 함수 수를 보여줍니다. 하지 않는 한 --점수 is
특별히 호출된 경우 이 옵션이 지정된 상태에서는 점수가 인쇄되지 않습니다. 그만큼
최소 점수 임계값도 0으로 감소됩니다. --한계점 is
지정되었습니다.
-c, --점수, --점수 없음
각 절차에 대한 점수를 표시합니다. 그만큼 무득점 양식은 옵션을 비활성화합니다.
이 옵션은 환경 변수나 초기화(rc)에서 미리 설정되지 않을 수 있습니다.
파일.
지정한 경우 --히스토그램, 개별 점수는 표시되지 않습니다.
옵션이 지정되었습니다.
-I 현, --무시하다=현
무시할 프로시저 이름입니다. 이 옵션은 횟수 제한 없이 나타날 수 있습니다.
일부 코드에는 어휘 분석을 혼동시키는 매크로가 정의되어 있습니다. 이로 인해
무시할 수 있습니다. 함수가 무시되도록 하는 다른 방법은 다음과 같습니다.
프로시저 헤더에 K&R 구문을 사용합니다.
전처리 매크로를 사용하여 프로시저 헤더를 조합합니다.
코드를 단순화하세요.
일반적으로 말하자면, 일반적인 C 구문을 변경하는 모든 작업은 C 구문을 혼란스럽게 합니다.
어휘 분석. 절차가 표시되지 않으면 계산되지 않습니다. 만약에
프로시저 내의 코드를 이해할 수 없으면 부적절할 가능성이 높습니다.
결과.
-H, --헤더 없음
점수 헤더를 인쇄하지 않습니다. 이 옵션은 환경에 따라 사전 설정되지 않을 수 있습니다.
변수 또는 초기화(rc) 파일에 있습니다.
스크립트가 점수 출력을 처리하려는 경우 구문 분석은
머리글. 히스토그램 출력에는 항상 헤더가 있습니다.
-u unifdef-opt, --unifdef=unifdef-opt
다음을 통해 소스를 실행하세요. 유니프데프(1BSD). 이 옵션은 무제한으로 나타날 수 있습니다.
횟수.
다음으로 둘러싸인 코드 섹션을 제거합니다. #if/#endif 지시문. 옵션
인수는 인수로 전달됩니다. 유니프데프(1BSD) 프로그램. 예를 들어:
복잡성 -u-D기호
원인이된다. 상징 정의하고 앞에 오는 코드 섹션을 제거합니다. #ifndef
상징 가이드 라인.
를 참조하십시오 유니프데프 자세한 내용은 설명서를 참조하십시오.
--unif-exe=음식물
unifdef 프로그램을 지정하십시오.
입력을 unifdef-ing하는 데 사용할 대체 프로그램입니다.
-i 파일 이름, --입력=파일 이름
파일 목록의 파일.
입력 파일의 명령줄 목록이나 표준에서 읽는 대신
입력하면 이 파일에서 파일 목록을 읽습니다.
--추적하다=파일 이름
추적 출력 파일.
중간 점수를 추적 파일로 인쇄합니다.
-?, --도움
사용 정보를 표시하고 종료합니다.
-!, --추가 도움말
호출기를 통해 확장된 사용 정보를 전달합니다.
-> [cfg 파일], --저장 옵션 [=cfg 파일]
옵션 상태 저장 cfg 파일. 기본값은 지난 구성 파일
에 나열 OPTION 프리셋 섹션, 아래. 업데이트 후 명령이 종료됩니다.
구성 파일.
-< cfg 파일, --로드 옵션=cfg 파일, --무부하 옵션
로드 옵션 cfg 파일. 그만큼 무부하 옵션 양식은 로드를 비활성화합니다.
이전 config/rc/ini 파일. --무부하 옵션 조기에 처리되지 않습니다.
-v [{v|c|n --번역 [{v|c|n}]}]
프로그램 버전을 출력하고 종료합니다. 기본 모드는 단순 버전인 `v'입니다.
`c' 모드는 저작권 정보를 인쇄하고 `n'은 전체 저작권을 인쇄합니다.
주의.
OPTION 프리셋
로 표시되지 않은 모든 옵션 지원 사전 설정 가능 에서 값을 로드하여 사전 설정할 수 있습니다.
구성("RC" 또는 ".INI") 파일 및 다음과 같은 환경 변수의 값:
복잡성_ or 복잡성
환경 사전 설정이 구성보다 우선 적용됩니다(나중에 처리됨).
파일. 그만큼 홈크 파일은 "$@/complex.conf""$ HOME""$PROJECT_ROOT/complex.conf"
".". 이들 중 하나라도 디렉토리인 경우 파일은 .complexityrc 내에서 검색됩니다.
그 디렉토리.
환경
만나다 OPTION 프리셋 구성 환경 변수용.
onworks.net 서비스를 사용하여 온라인으로 복잡성을 활용하세요