문제

C ++ 소스를 분석하고 사용되지 않는 코드를 말하는 도구가 필요합니다. 소스의 크기는 ~ 500MB입니다

도움이 되었습니까?

해결책

PC 린트가 좋습니다. 무료/오픈 소스 여야하는 경우 선택이 줄어 듭니다. CPPCheck은 무료이며 사용하지 않은 개인 기능을 확인합니다. 나는 그것이 PC-Lint와 같은 끊임없는 클래스와 같은 것을 찾고 있다고 생각하지 않습니다.

다른 팁

다시 한번, 나는 던질 것이다 aqtime 토론에. 지원되는 언어의 대부분은 아니지만 대부분의 정적 코드 분석이 있습니다. 나는 실제로 그 부분에 들어 가지 않았다. 나는 주로 동적 프로파일 러 (메모리, 성능 등)를 사용했다.

코드 커버리지 도구 (동적 분석)를 사용하여 어떤 코드가 실행되지 않는지에 대한 아이디어를 얻은 다음 해당 코드가 실제로 쓸모 없는지 확인하기 위해 손으로 분석 할 수 있습니다.

정적 분석을 원한다면 전체 500MB의 소스 코드 (est. 2 천만 줄? 와우!)를 읽고 사용 된 내용에 대한 보수적 인 추정치를 계산할 수있는 도구가 필요합니다. 이를 위해서는 전체 시스템에 걸쳐 포인트 간 분석을 수행해야합니다.

그 이유는 다음과 같습니다. 모듈 Z를 제거하고 FOO가 사용되지 않았다고 결정하면 나중에 Z가 Foo를 사용한 사람이거나 미묘하게 사용 된 것으로 알 수 있습니다. 포인터를 통해 "사용하지 않은"함수라고 불리는 세 번째 모듈 M에.

이것이 의미하는 바는 단일 모듈 (컴파일 장치) 만 읽는 정적 분석 도구 가이 질문에 안전하게 대답 할 수 없다는 것입니다. 그리고 당신의 규모에 따라, 당신은 멍청한 실수를 할 여유가 없습니다.

우리 회사 인 Semantic Designs는 DMS 소프트웨어 리엔지니어링 툴킷을 사용하여 C C 코드의 3 천 5 백만 라인 시스템에 대한 포인트 간 분석을 수행했습니다. DMS~할 수 있다 매우 큰 소스 코드 시스템을 읽으십시오. 소스 코드가 C ++의 홀수 (Archiac) 방언에 있었기 때문에 사용자 정의 도구가 필요하지 않았습니다 (매우 현대적인 방언의 시스템은 크게 할 수 없으며 코딩 할 시간이 충분하지 않습니다!). 대형 시스템에는 다른 특이한 요인이 있습니다. 우리가 한 C 시스템의 경우, 사용자 정의 동적 링커가 있었고 포인트-투-투에 영향을 미쳤으며, 이로 인해 커스터마이징해야했습니다.

Alway에 대해 논의하는 규모의 시스템은 이와 같은 놀라움을 가지고 있기 때문에 (Bibseh : "큰 시스템에서는 모든 것이 발생하기 때문에") 질문에 대답하려면 사용자 정의 도구가 필요할 것입니다. DMS는 사용자 정의되도록 설계되었습니다. 보다 http://www.semanticdesigns.com/products/dms/dmstoolkit.html그리고 http://www.semanticdesigns.com/products/frontends/cppfrontend.html

코드 적용 범위 도구는 필요한 것이지만 모든 기능을 통해 프로그램을 실행하고 미사용으로 재조정 된 내용을 확인해야합니다. 코드는 DLL 내보내기 기능이 될 수 있으므로 외부에서 아무것도 사용하지 않아야합니다. 일부 코드 커버리지 도구 : Purify, CTC ++, BoundSchecker는 제대로 기억하고 다른 많은 도구를 기억하면 코드 커버리지 기능이있을 수 있습니다.

어떤 외부 프로그램이 링크/사용 중인지 모르면 내보낼 수있는 기능을 제거하는 데 매우주의하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top