문제

Java를위한 정적 분석 도구는 가장 쉬운 확장 메커니즘을 갖습니다. 나는 확인했다 PMD 그러나 맞춤 규칙을 작성하는 과정은 매우 관여하는 것으로 보입니다. 구체적으로, 나는 제공하는 도구가 있는지 알고 싶습니다. 종자 흥미로운 코드 영역을 선택하기위한 구문처럼? 나는 Saffess 's를 알고 있습니다 declare warning 그러나 그것이 할 수있는 일이 제한적인 것으로 보입니다.

관련 질문을 찾았습니다.

Java에 대한 정적 분석 도구 권장?Java에 대한 정적 분석 도구 권장?

답은 많은 도구를 나열합니다. 그러나 사용자 정의 규칙을 작성하기에 가장 쉬운 옵션을 제공하는 것이 무엇인지 찾고 싶습니다.

편집하다: 지금까지 Guillaume이 제안한 PMD의 XPath 표현은 내가 찾고있는 것과 가장 가까운 것으로 보입니다. 나는 곧 그것을 탐색 할 것이다.

도움이 되었습니까?

해결책

정적 분석 도구 "확장"의 실제 문제는 "정적 분석"은 일반적으로 수행하기 위해 많은 기계가 필요한 광범위한 주제입니다. 구문 분석, 트리 빌딩, 제어 흐름 그래프 추출, 데이터 흐름 추출, 포인트- 분석, 간호 분석, 범위 분석, 목록은 계속 진행되며 프로그램 분석에 관한 수많은 컴파일러 문헌을 참조하십시오.

표면 구문의 패턴 매칭을 사용하여 일부 프로그램 코드에 도구의주의를 집중시킬 수 있지만, 그 시점에서 "정적으로 분석"하려는 공구에 대해서는 여전히 도구에 대해 설명해야합니다 (예 : Points-와 같은 일부 분석. ]] 먼저 모든 곳에서 분석을 수행 한 다음 원하는 부분을 선택해야합니다).

도의적인: 임의의 분석을 쉽게 할 수있는 도구를 확장하는 것이 쉽지 않다고 생각하지 마십시오. 기본적으로 어떤 종류의 분석에 관심이 있는지 결정해야합니다 (오염 된 입력? 첨자 범위 체크? API 남용?) 이미 이러한 종류의 지원을 지원하는 도구를 찾아야합니다. 적어도 당신의 "확장"은 도구가 이미하는 것과 비슷하기 때문에 단순 할 가능성이 있습니다.

당사의 DMS 소프트웨어 리엔지니어링 툴킷은 많은 응용 프로그램 및 langauges에서 모든 종류의 분석 기계를 구축하는 데 드는 비용을 상각하려는 시도입니다. C, C ++, Java 및 COBOL에 대한 구문 분석, 제어/데이터 흐름 분석 및 포인트-투 관련 분석을 다양한 정도에 제공합니다. 그리고 "포인트"를 돕기 위해 표면 신생대 패턴이 일치합니다. 보다 http://www.semanticdesigns.com/products/dms/dmstoolkit.html

다른 팁

실제로 PMD에 대한 사용자 정의 규칙을 작성하는 것은 매우 쉽습니다. PMD는 코드의 흥미로운 영역을 찾기 위해 XPath와 같은 구문을 제공하므로 XML에 대한 최소 경험이 있다면 즉시 시작할 수 있습니다. PMD 또는 FindBugs에 1-2 시간을 투자하고 특정 질문이 있으면 여기로 돌아 오는 것이 좋습니다.

글을 쓰려고하는 규칙을 정확히 말해 주면 더 나은 답변을 줄 수 있습니다 ...

쓰기 a FindBugs 맞춤 탐지기입니다 아주 간단합니다.

설명과 같이 FindBugs 설치의 플러그인 디렉토리에 떨어 뜨립니다. 여기.

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