PHP로 계산 된 CRAP 인덱스를 읽고 개선하는 방법
방금 PHPUnit과 다채로운 코드 커버리지 보고서 작업을 시작했습니다. 나는 모든 숫자와 비율이 CRAP 지수를 제외하고는 것을 이해합니다. 누구든지 그것이 의미하는 바, 분석 방법 및 낮추는 방법에 대한 확실한 설명을 제공 할 수 있습니까?
@Toader Mihai는 확실한 설명을 제공했습니다. (나에게서 +1)
낮추는 방법 :
덜 복잡한 코드를 작성하거나 더 잘 테스트 된 코드를 작성하십시오. (아래 그래프 참조)
더 나은 테스트 코드?
이 맥락에서 이것은 단지 다음을 의미합니다 : 더 높은 코드 커버리지와 일반적으로 더 많은 테스트를 작성하게됩니다.
덜 복잡한 코드?
예 : 메서드를 더 작은 메서드로 리팩터링합니다.
// Complex
function doSomething() {
if($a) {
if($b) {
}
if($c) {
}
} else {
if($b) {
}
if($c) {
}
}
}
// 3 less complex functions
function doSomething() {
if($a) {
doA();
} else {
doNotA();
}
}
function doA() {
if($b) {
}
if($c) {
}
}
function doNotA() {
if($b) {
}
if($c) {
}
}
(사소한 예일 뿐이며 더 많은 리소스를 찾을 수있을 것입니다.)
추가 리소스 :
먼저 몇 가지 추가 리소스를 제공하겠습니다.
경우에 따라 : 순환 적 복잡성이 설명되었습니다 . PHP_CodeSniffer 및 PHPMD와 같은 도구는 알고 싶은 경우 해당 번호를 알려줍니다.
그리고 어떤 숫자가 "정상"인지 결정하는 것이지만, 자주 제안되는 숫자 (즉, 높은 imho)는 쓰레기 지수가 30 인 결과 다음과 같은 그래프가됩니다.
(여기에서 .ods 파일을받을 수 있습니다 : https://www.dropbox.com/s/3bihb9thlp2fyg8/crap.ods?dl=1 )
기본적으로 방법 변경 위험의 예측자가되기를 원합니다.
여기에는 두 가지 요소가 있습니다.
- 방법의 코드 복잡성 (
cyclomatic complexity
) 일명 해당 방법에 얼마나 많은 결정 경로가 존재하는지 :comp(m)
. - how testable is that method (via automated tests, provided by a code coverage tool). Basically this measures how many decisions in said code are automatically testable.
If the method has 100% coverage than the risk of change is considered to be equivalent only with the complexity of the method: C.R.A.P.(m) = comp(m)
.
If the method has 0% coverage than the risk of change is considered to be a second degree polinomial in the complexity measure (reasoning being that if you can't test a code path changing it increases risk of breakage): C.R.A.P.(m) = comp(m)^2 + comp(m)
Hopefully this will help you.
I just noticed that I only provide the half answer (the read part). The how to improve it should be pretty clear if you understand the reasoning of the index. But a much more clear explanation is given in @edorian's answer.
짧은 이야기는 100 %에 가까운 범위가 될 때까지 테스트를 작성하고 그 후에 순환 복잡성을 줄이기 위해 메서드를 리팩토링하는 것입니다. 테스트를하기 전에 리팩토링을 시도 할 수 있지만 실제 메서드 복잡성에 따라 수행중인 변경의 모든 결과를 추론 할 수없는 경우 (관련된 복잡성으로 인해) 파손될 위험이 있습니다.
참고 URL : https://stackoverflow.com/questions/4731774/how-to-read-improve-crap-index-calculated-by-php
'program tip' 카테고리의 다른 글
ResultSet 예외-결과 세트 시작 전 (0) | 2020.11.07 |
---|---|
Mysql 1050 오류 "테이블이 이미 있습니다." (0) | 2020.11.07 |
"공유 객체를 만들 때`.rodata.str1.8 '에 대한 재배치 R_X86_64_32는 사용할 수 없습니다."로 컴파일 실패 (0) | 2020.11.07 |
getchar ()로 Enter 키를 누르지 않는 방법 (0) | 2020.11.07 |
자바 스크립트 하위 문자열 (0) | 2020.11.07 |