2010-02-25 37 views
6

Tôi đang sử dụng Groovy trong một ứng dụng Java Swing như là một phần trong kế hoạch của mình để ép buộc bản thân các ngôn ngữ động cho đến khi tôi thích chúng (điều này đang xảy ra, một phần).Dấu vết ngăn xếp sạch trong Groovy bằng Eclipse?

đống dấu vết của tôi được làm đầy với các công cụ Groovy như

org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor 

là có một cách để có được Eclipse để loại bỏ tất cả điều đó codehaus thứ (ngăn xếp bộ lọc dấu vết, về cơ bản)?

Edit: tôi có thể làm điều này từ dòng lệnh với grep (tốt, not yet) vì vậy nó không quá tệ, nhưng bên trong Eclipse sẽ là tuyệt vời quá.

+0

Nếu bạn đang theo dõi ngăn xếp đang được bán phá giá thông qua một trình ghi nhật ký (như java.util.Logger), bạn có thể định dạng chúng theo cách bạn muốn. Tuy nhiên, loại bỏ các công cụ từ ngăn xếp dấu vết lập trình có vẻ giống như một trong những điều đó có thể lái xe một người duy trì mã của bạn điên. Nếu bạn đang gỡ lỗi, tôi sẽ gắn bó với grep - sau đó trong sản xuất mã của bạn sẽ tạo ra dấu vết ngăn xếp chính xác tất cả các thời gian. – Quotidian

+0

@Quotidian, quan sát của bạn là một phần chính xác. Đây là những dấu vết ngăn xếp "thời gian phát triển" sẽ ngừng khởi động ứng dụng. Mặt khác, tôi nghĩ rằng BẤT CỨ MỘT phát triển trong groovy sẽ muốn loại bỏ những thứ đó, trừ khi họ đã làm việc trên mã codehaus. Chỉ cần nói "hello world" có một tấn mã codehaus được gọi. Làm cho không có ý nghĩa, từ góc độ người dùng/lập trình viên. –

Trả lời

9

Có một Tiện ích trong Groovy thực hiện chính xác những gì bạn muốn: StackTraceUtils. STU sẽ xóa tất cả thông tin cuộc gọi khỏi ngăn xếp của bạn, để lại những thứ bạn thực sự quan tâm.

Chỉnh sửa: Trong Java, bạn sẽ phải loại trừ ngoại lệ theo số java.lang.RuntimeException theo nhận xét.

Ví dụ về sử dụng:

try { 
    1/0; 
} catch (Throwable t) { 
    throw new RuntimeException(org.codehaus.groovy.runtime.StackTraceUtils.sanitize(t)); //Modifies the Throwable and rethrows 
} 

StackTraceUtils có sẵn trong phiên bản mới nhất của Groovy và ban đầu xuất phát từ Grails. Tôi không chắc chắn làm thế nào bạn sẽ đi về việc áp dụng này cho tất cả các dự án stacktraces của bạn nhưng tôi nghĩ rằng cả Griffon và Grails hiện nó vì vậy cần có một số gợi ý trong những dự án.

+0

Thứ tốt, THANK YOU! –

+0

Tôi sẽ đánh dấu đây là câu trả lời hay nhất hiện nay, nhưng nếu ai đó đến cùng, người có thể cho tôi biết làm thế nào để có được Eclipse để làm điều này ... Nhưng đối với tôi điều này đã làm việc. –

+0

Bạn được chào đón. Bạn sẽ có thể thực hiện điều này một cách tự động cho tất cả các stacktraces không được sử dụng bằng cách sử dụng java.lang.Thread.UncaughtExceptionHandler cho phép bạn đăng ký một ngoại lệ cho các ngoại lệ chưa được bắt nhưng tôi không thể làm việc này. Đọc thêm về điều này tại đây: http://dabblescribble.blogspot.com/2009/11/starting-out-in-griffon-3-logging.html – xlson

2

Tôi không có câu trả lời cho "Chạy dưới dạng ứng dụng Groovy", nhưng nếu bạn chạy GroovyTestcases dưới dạng các kiểm tra jUnit trong Eclipse, có một nút "dấu vết ngăn xếp bộ lọc" phía trên màn hình theo dõi ngăn xếp.

+1

+1 chúng tôi đang tiến gần hơn! –

Các vấn đề liên quan