Nếu tất cả bạn muốn là văn bản chính xác của từng phương pháp, và các văn bản chính xác của các biến bên trong phương pháp này, bạn có thể nhận được bởi với một cú pháp mà tạo ra một CST, đi bộ trên CST để tìm các nút bên phải, và sau đó in đẹp các subtrees tìm thấy. ANTLR has a Java parser sẽ hoạt động cho việc này. Tôi không biết nếu nó sẽ nắm bắt ý kiến. Tôi nghĩ phân phối chính của ANTLR được mã hóa bằng Java.
Bạn có thể làm điều này hackily hơn, trong Java, với một lexer cho Java, thực hiện những gì Số tiền để một phân tích cú pháp đảo xấu trông cho các cụm từ khóa. ("Sau khi" lớp học ', tìm' {'và in ra mọi thứ bạn tìm thấy cho phù hợp'} '"sẽ cung cấp cho bạn tất cả các phương pháp và các lĩnh vực).
Nếu bạn muốn chi tiết chính xác hơn (ví dụ: bạn muốn biết loại đối số thực tế thay vì chỉ tên của nó hoặc loại thực sự được xác định), bạn sẽ cần trình phân tích cú pháp có tên giao diện người dùng độ phân giải. (ANTLR sẽ không làm điều này.) Các Eclipse JDT chắc chắn xây dựng cây; nó có khả năng phân giải tên. DMS Software Reengineering Toolkit của chúng tôi với Java Front End của chúng tôi có thể cung cấp mọi thứ cần thiết cho nhiệm vụ này, bao gồm cả nhận xét và trích xuất. DMS không được mã hóa bằng Java.
Bạn phản đối Javadoc như là không đầy đủ, bởi vì nó không cung cấp cho bạn nội dung của phương pháp này. Có lẽ Java Source Browser của chúng tôi cung cấp cho bạn mã đó, sẽ phục vụ tốt hơn. Nó tích hợp dữ liệu phân giải tên từ DMS/Java Front End của chúng tôi để siêu liên kết thông tin kiểu JavaDoc vào văn bản nguồn có thể duyệt; tất cả các trường cũng như các biến cục bộ được lập chỉ mục một cách rõ ràng. Trình duyệt nguồn không được mã hóa bằng Java, nhưng có lẽ bạn chỉ muốn chạy nó và loại bỏ kết quả của bạn. Cào như vậy có thể khó hơn nó xuất hiện nhìn chằm chằm vào màn hình; có rất nhiều HTML đằng sau màn hình như vậy.
Nguồn
2012-06-16 05:07:54
Trích xuất theo định dạng nào? Bạn có thể chỉ cần chạy công cụ Javadoc và xử lý HTML được tạo. –
Đối với tôi API nếu chúng có sẵn, sẽ hữu ích hơn, getMethodNames, getComments, getDocumentation v.v. Ngoài ra, Javadoc sẽ không cung cấp cho tôi các biến riêng được khai báo bên trong phương thức, tên của các phương thức được gọi từ phương thức v.v. –
tìm kiếm là một [phân tích tĩnh] đầy đủ (http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java). –