2008-08-05 32 views

Trả lời

2

Thxm, Mc! http://asm.objectweb.org/là một số khác. Tuyệt vời tài liệu về thiết bị mã byte, nhưng không có gì "trực tiếp" nhằm viết một công cụ bảo hiểm - chỉ một số gợi ý hoặc ý tưởng.

7

Ngôn ngữ kịch bản của bạn có tạo ra bytecode không? Nó có tạo ra siêu dữ liệu gỡ rối không? Nếu vậy, công cụ bytecode có lẽ là con đường để đi. Trong thực tế các công cụ hiện có như có thể sẽ hoạt động; có lẽ với sự sửa đổi tối thiểu (vấn đề điển hình là các công cụ được viết để làm việc với Java và giả định com.foo.Bar.class tương ứng với com/foo/Bar.java. Bỏ ràng buộc rằng giả định có thể tẻ nhạt.) EMMA là một ClassLoader viết lại mã byte để thu thập mã bảo hiểm trong Java. Phong cách mã hóa là một chút sôi nổi, nhưng tôi khuyên bạn nên đọc nguồn cho một số ý tưởng.

Nếu ngôn ngữ kịch bản của bạn được diễn giải thì bạn sẽ cần thứ gì đó cao hơn (cấp nguồn) móc vào trình thông dịch.

1

Bạn cũng có thể lấy nguồn từ công cụ bao phủ mã nguồn mở và tìm hiểu từ nó.

2

Bạn cũng có thể muốn sử dụng một cái gì đó như BCEL để phân tích những dòng nguồn thực sự tồn tại trong mã byte. Bạn không muốn báo cáo rằng những thứ như dòng trống và nhận xét chưa được đề cập đến.

+0

Đây không phải là ý tưởng hay trừ khi số dòng trong BCEL khớp với số trong DSL của OP chính xác. Nếu không, bạn sẽ được bảo hiểm trên các dòng nguồn "sai". –

2

Nếu bạn đang nói về ColdFusion (mà tôi giả sử bạn là từ các thẻ) thì tôi không chắc chắn này là doable nhưng tôi có thể rất sai ở đây ...

IIRC, Khi CF biên dịch nó về cơ bản biên dịch thành một dạng giải nghĩa của CFML như là một tệp nguồn java cũ đơn giản, sau đó nó được biên dịch vào lớp. Do đó, bất kỳ thiết bị đo đạc nào mà bạn có thể có sẽ áp dụng cho phiên bản trung gian thay vì bản thân CFML.

Nói rằng mặc dù, Adobe đã có trình gỡ lỗi CF ngay bây giờ mà có thể bước qua mã, vì vậy hãy chứng minh cho tôi sai - Tôi muốn yêu thích mã trong CFML.

+0

Xem câu trả lời của tôi về "Bảo hiểm chi nhánh cho các ngôn ngữ tùy ý được thực hiện dễ dàng". Việc thiết lập mã CFML trực tiếp và sau đó biên dịch nó sang Java vẫn sẽ cung cấp trực tiếp dữ liệu vùng phủ sóng cho CFML. (Tôi xây dựng các công cụ kiểm tra để kiếm sống). –

+0

Đây là tất cả những gì về? Bảo hiểm mã Rancho cho ColdFusion http://kunalsaini.blogspot.in/2012/05/rancho-code-coverage-tool-for.html –