2010-02-04 61 views
6

Có một trình cắm thêm cho Eclipse cho phép bạn tìm kiếm dựa trên Java AST (Abstract Syntax Tree) của các tệp dự án của bạn không? Các "Java tìm kiếm" tính năng dường như không bao gồm các trường hợp như:Tìm kiếm dựa trên AST cho Eclipse

"Đưa tôi tất cả các lĩnh vực khai báo là kiểu 'X' trong mọi tầng lớp"

tôi có thể tưởng tượng nhiều khả năng hơn sẽ mở ra với một tìm kiếm dựa trên AST, nhưng tôi thậm chí không biết liệu một trình cắm thêm như vậy có hiệu suất thực tế hay không.

Cập nhật: Như được chỉ ra bởi Kevin bên dưới, tính năng Tìm kiếm Java không bao gồm trường hợp sử dụng tôi đã đề cập. Tôi vẫn còn tò mò mặc dù có ai đó đã viết một plug-in cho phép bất kỳ loại tùy ý của AST tìm kiếm, ví dụ. "Nhận tất cả concatenations chuỗi" (InfixExpression với nhà điều hành + và toán hạng StringLiteral)

Trả lời

1

Nhận cho tôi tất cả các lĩnh vực khai báo là loại 'X' trong mọi tầng lớp

Tôi không biết những gì khác bạn đã có trong tâm trí nhưng tôi tin rằng bạn có thể thực hiện tìm kiếm cụ thể này bằng cách làm như sau:

  • Mở cửa loại X (Ctrl-Shift-T)
  • Highlight tên lớp
  • Ctrl-H để tìm kiếm
  • Tìm kiếm địa điểm Loại/trận đấu -> loại trường
+0

Đó dường như chỉ trả lại tuyên bố của các loại riêng của mình. – dcstraw

+0

Xin lỗi. Tôi đã chỉnh sửa mục nhập để sử dụng bộ lọc Vị trí phù hợp thay vì Tuyên bố. – Kevin

+0

Ah, tuyệt vời, cảm ơn bạn. Tôi chưa bao giờ thử tùy chọn Vị trí phù hợp trước đây. Điều đó ít nhất bao gồm các trường hợp sử dụng tôi đã đề cập. – dcstraw

1

Nó không chính xác những gì bạn đang tìm kiếm, nhưng nWire cho Java có thể cung cấp cho bạn rất nhiều thông tin mà là bắt nguồn từ AST. Nó cũng có một tìm kiếm văn bản đầy đủ để tìm kiếm bất kỳ loại, phương pháp, lĩnh vực, vv Một khi bạn tìm thấy những gì bạn đang tìm kiếm, một nhấp chuột sẽ cho bạn thấy tất cả các hiệp hội của thành phần đó.

Xem bản demo here.

2

Có một số trình cắm thêm Eclipse cung cấp ngôn ngữ truy vấn hướng đối tượng và nhằm mục đích trả lời các truy vấn đó. Một số trong số họ:

Bên ngoài Eclipse có JArchitect Mã Query Language

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