직장에서 우리는 몇 가지 측정 도구 (주로 순환 복잡성 및 LCOM)를 수집하기 위해 여러 도구를 사용하고 있습니다. 우리는 경고 플래그를 얻고 선제 리팩토링 노력을 안내하기 위해 이들을 사용합니다. 코드 품질을 높이는 데 매우 도움이되었습니다.순환 복잡도 및 LCOM 제한 적용을위한 주석
그러나 프로세스는 빌드 프로세스와 관련이 없습니다. 그것은 별도로 실시됩니다. 게다가, 나는 소스 코드에 내재 되어질 수있는 것을 찾고있다. (외부 프로세스가 실행되는 것과는 대조적이다.)
누군가가 주석 집합과 구성 가능한 주석 처리기를 인식 할 수 있는가? 컴파일러에서 실행해야하며 코드가 임계 순환/LCOM 메트릭을 준수하지 않으면 빌드가 실패하게됩니다.
maven/ant에서 ckjm, checkstyle 및 pmd를 실행할 수 있지만 소스 코드에서 일부 작업을하고 다른 바이트 코드에서 작업 할 수 있다고 생각합니다. 컴파일이 시작되기 전에 소스 코드에서 작동하는 하나의 통합 도구를 갖는 것이 좋을 것입니다.
다른 것은이 드라이브 수 주석의 집합이 있다면 그것은 좋은 것이다 (필연적으로 코너의 경우에 필요합니다 사용자 정의 할 수 있도록이.)
@LCOM3(Threshold=1.5)
public class SomeDumbPojo {... buch of gets/sets...}
// by default would be measured against a strict LCOM3
public class ActualBizClass
{
@CYCLOMATIC_COMPLEXITY(Threshold=15)
public void someFatIrreducibleMethod(){...}
}
그런 때 이 도구를 실행하면 기본적으로 엄격하게 (구성 가능한) 메트릭 임계 값이 적용됩니다 (예외가 있으면 문서화되고 합법적 인) 완화 된 임계 값으로 주석 처리 된 아티팩트는 예외입니다. 감소시킬 수 없거나 줄일 수없는 일부 방법의 경우, 완화 된 순환 복잡성이 의미가 있습니다. 일반적인 POJO의 경우, LCOM은 완화되어야하고 ... 등등.
내가보기에, 내가 찾은 것, 나는 아무것도 찾을 수 없었습니다 (희망적으로 오픈 소스). 그러나 누군가가 그런 종류의 것을 알고있는 경우에 대비하여 여기에 물어볼 수도 있습니다.
감사합니다.
"컴파일"이란 말은 javac이 바이트 코드를 뱉어내는 단계를 의미합니다. 우리는 Java 소스 코드를 스캔하고 그로부터 메트릭을 추출하는 독점 도구를 사용합니다 (컴파일은 필요하지 않음). 그러나이 도구는 빌드 프로세스의 일부로 사용할 수 없습니다. 어노테이션을 사용하여 주어진 임계 값을 추가하는 아이디어는 프로세스의 결과물입니다. 클래스가 순환 적 복잡성 (예 : 10)을 넘는 메소드를 가지고있는 경우, 제안, 검토 및 승인 된 문서화 된 케이스를 제외하고 빌드가 중단됩니다 (따라서 빌드 진행을 위해 주석을 달았습니다). –