2008-08-05 5 views
19

실제적으로 토론하는 책 또는 다른 참고를 찾는 방법 는 Java에있는 코드 적용 공구를 쓰는 방법이다; 다양한 기술이나 트릭 중 일부 - 소스 코드와 바이트 코드 계측.코드 적용 도구를 작성하는 방법은 무엇입니까?

후드 아래에 자바 바이트 코드를 생성하는 스크립팅 언어 용입니다.

답변

2

Thxm, Mc! http://asm.objectweb.org /은 다른 것입니다. 우수 바이트 코드 계측에 대한 문서화, 그러나 커버리지 도구 작성을 겨냥한 "직접"(힌트 또는 아이디어 만) 것은 없습니다.

7

스크립팅 언어 바이트 코드가 생성됩니까? 디버그 메타 데이터를 생성합니까? 그렇다면 바이트 코드 도구를 사용하는 것이 좋습니다. 실제로 기존 도구가 작동 할 것입니다. 아마도 최소한의 수정으로 (아마도 일반적인 문제는 도구가 Java와 함께 작동하도록 작성되었으며 com.foo.Bar.class가 com/foo/Bar.java에 해당한다고 가정 할 때 그 가정을 푸는 것은 지루할 수 있습니다.) EMMA은 ClassLoader입니다. 자바에서 코드 커버리지 컬렉션을위한 바이트 코드 재 작성. 코딩 스타일은 약간 펑키하지만 소스를 읽으면서 아이디어를 얻는 것이 좋습니다.

스크립팅 언어가 해석되는 경우 인터프리터에 연결되는 상위 수준 (원본 수준)이 필요합니다.

1

오픈 소스 코드 커버리지 도구에서 소스를 가져 와서 배울 수도 있습니다.

2

BCEL과 같은 것을 사용하여 바이트 코드에 실제로 어떤 행의 소스가 있는지 분석 할 수도 있습니다. 빈 줄과 주석이 다뤄지지 않았다고보고하고 싶지는 않습니다.

+0

BCEL의 라인 번호가 OP의 DSL에있는 라인 번호와 정확하게 일치하지 않는 한 이것은 좋지 않습니다. 그렇지 않은 경우 "잘못된"소스 라인에 대해 보상을받습니다. –

2

그런 다음 나는이 행할 수 있지만, 여기 아주 잘못 될 수있다 확실하지 않다 (난 당신이 태그에서 있다고 가정) ColdFusion에서 얘기하는 경우 ...

IIRC, CF 그것을 컴파일 기본적으로 CFML의 해석 된 형식으로 일반 오래된 Java 소스 파일로 컴파일 한 다음이 파일을 클래스로 컴파일합니다. 따라서 보유하고있는 계측 도구는 CFML 자체가 아닌 중간 버전에 적용됩니다.

그래도 어도비는 코드를 따라갈 수있는 CF 디버거를 가지고 있으므로 잘못 설명하십시오. CFML 코드 커버 리지를 좋아할 것입니다.

+0

"임의 언어에 대한 지점 적용 범위"에 대한 제 응답을 참조하십시오. CFML 코드를 직접 인스트루먼트 한 다음 Java로 컴파일하면 CFML에 직접 테스트 커버리지 데이터가 제공됩니다. (나는 생존을위한 테스트 커버리지 툴을 구축한다.) –

+0

이 모든 내용은 무엇입니까? ColdFusion의 란초 코드 범위 http://kunalsaini.blogspot.in/2012/05/rancho-code-coverage-tool-for.html –

관련 문제