저는 레거시 C++ 코드베이스의 현재 소유자입니다. 수십 개의 소스 & 헤더 파일이 있습니다. 이 프로젝트는 일반적으로 리눅스에서 개발, 빌드 및 배포됩니다. 리눅스에서 빌드 시스템은 scons/gcc이고 제품은 하나의 실행 파일입니다.Visual Studio Maintainability Index의 계층 구조는 main()까지만입니다.
코드 영역의 아키텍처에 대한 업데이트가 이전 아키텍처보다 유지 관리 가능하다는 것을 보여주기 위해 코드의 여러 부분에 대해 유지 관리 가능성 (MI)을 생성하려고합니다. 그래서 몇 가지 조사를했고 Visual Studio 2013 (Ultimate 라이센스가 있음)이이 작업을 수행한다는 것을 알았습니다.
새 VS2013 "Win32 Console Application"에 모든 소스를 성공적으로 가져 왔습니다. 또한 gcc & VS2013 간의 차이점을 수용하기 위해 몇 가지 변경 사항을 적용하여 빌드 할 소스를 얻었습니다.
나는 실행하는 시도 "분석 |에 대한 코드 메트릭 계산을 [프로젝트]"와 VS2013이 오류 발생 :Project: [omitted] Configuration: Debug Scope: None Assembly: [omitted] Maintainability Index: Cyclomatic Complexity: Depth of Inheritance: Class Coupling: Lines of Code: Message: The project target file '[omitted]' contains no managed code.그래서 내가 "속성의 값이 변경 | 구성 속성 | 일반 | 공용 언어 런타임 지원 ""CLR 지원 없음 "에서"Pure MSIL CLR 지원 "으로 변경 한 후"코드 메트릭 결과 "창에서 확인하십시오 (아직 이미지를 게시 할 수 없어 최선을 다해 출력 함) :
Hierarchy Maintainability Index Cyclomatic Complexity ... ---------------------------------------------------------------------------------- * [executable] (Debug) 36 31 * Global 36 31 * main(int, char** const): int 36 31
main()보다 자세한 정보를 얻을 수 없습니다. [executable] 또는 Global과 같이 main()을 확장합니다. 파일 당, 함수 별 또는 클래스 별 점수를 얻을 수있을 것이라고 생각했습니다.
는사람은 말해 줄 수 :
- 는 VS2013는 행된 파일, 함수, 클래스 수준에서 MI를 생성 할 수 있습니까?
- 어떻게 수행하나요?
- < $ 50 리눅스에서 코드를 실행하여 MI를 생성 할 수 있습니까?
나는 코드에 최소한의 변경을 만들고 싶어하지만 쉽게 변경이 소스 새 프로젝트 & 다시 가져 오기를 만들고, 유형, 프로젝트 속성 투사 할 수 있도록 빌드 .DLL하는 제품 또는 lib 디렉토리를 변경할 수 있습니다 등등.
유지 관리 지표 란 무엇입니까? 다른 이름을 사용하여 Linux 용으로 잘 알려진 도구가있을 수 있습니다 (예 : [C++ check] (http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page) [disclaimer - I haven ' t는 도구를 사용했다 - 나는 단지 그것을 봤다]). –
Maintainability Index는 기본적으로 코드 유지 관리의 상대적 용이성을 나타내는 지표입니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/bb385914.aspx 및 http://www.projectcodemeter.com/cost_estimation/help/GL_maintainability.htm을 참조하십시오. C++ check에 대한 링크를 제공해 주셔서 감사합니다. –
그냥 C++ 검사를 보았습니다. 정적 분석을위한 좋은 도구 였지만 찾고있는 것이 아닙니다 ... 제가 찾고있는 것은 복잡한 수학 알고리즘을 구현하는 한 가지 방법이 그것을 구현하는 또 다른 방법보다 읽고 유지해야합니다. –