找出Java / Eclipse项目中特定包的类的使用位置

时间:2011-10-19 15:09:27

标签: java eclipse find grep package

我有许多Eclipse项目都使用特定包中的类,我们称之为“gr.serafeim”。现在,我想找到所有源文件中的哪些(每个文件的行号)是gr.serafeim的成员。问题是我通常使用导入而不是类的完全限定名称,因此搜索“gr.serafeim”只会返回import语句:(

我不想要任何东西,只是一个快速而肮脏的解决方案,找出包含gr.serafeim包类的所有行(eclipse插件?)。作为附加值,我不仅需要声明,还需要这些函数的方法调用。

这是我真正想要的一个例子:

// File main.java   
import gr.serafeim.*;
public static void main(String args[]) {
    // Test is a member of gr.serafeim !
    Test t = new Test(5);
    int i=3;
    t.add(i);
}

我想从前一个文件返回的内容是这样的

main.java: 5: Test t = new Test(5); 
main.java: 7: t.add(i); 

如果以前不能完成,那么我也可以采用一种方法来大规模命名所有课程。声明

Test t = new Test(5);

会变成

gr.serafeim.Test t = new gr.serafeim.Test(5);

然后我只是grep for gr.serafiem。这当然无助于找到t.add(i)行,但这将是一个很好的第一步,我可以自己检查代码...

This is not the same with this question!

3 个答案:

答案 0 :(得分:1)

右键单击 - >参考文献 - > (无论你想要什么)。对于工作区引用,Shift-Ctrl-G(默认情况下,无论如何)。

认为默认结果列表是一棵树,可以更改为列表。我认为它显示行号,但是,至少在我正在使用的略微过时的Eclipse版本中。如果您专门寻找行号,我认为默认工具没有包含它们的导出。

您可以尝试使用IntelliJ社区版;其搜索执行显示行号,结果可导出到文本文件(下面的片段)。

Class
    server.UDPServer
Found usages  (44 usages)
    StartThread.java  (6 usages)
        (12: 19) private final UDPServer myserv;
        (14: 17) StartThread(UDPServer server){
        (18: 16) myserv.button1.setEnabled(false);
        (19: 16) myserv.button2.setEnabled(true);
        (30: 32) myserv.area.append("Server is started\n");
        (37: 36) myserv.area.append(" Received "

答案 1 :(得分:1)

这是一个黑客:

使用package-info.java文件将软件包标记为已弃用:

@Deprecated
package com.yourcompany.yourpackage;

现在,您应该在使用软件包的任何地方看到编译器警告

答案 2 :(得分:1)

您可以选择类,构造函数,方法或字段,然后按“ctrl + alt + h”。这将打开调用层次结构菜单。