你知道找到eclipse的所有引用功能(搜索>参考>工作区或Ctrl-Shift-G)?我该如何以编程方式运行?
我有一个庞大的代码库,我需要审核安全违规,并需要链接大约十几个条件。
那里有库可以用Java分析大型项目(我有1GB的源文件)吗?以下是我需要回答的问题:
我可以在一天内手动执行此操作,但宁可花2写一个漂亮的脚本来为我做这项工作。
我可以使用哪些代码来编写Eclipse这些常见任务的脚本?理想情况下,我想执行命令行,因此它们可以重复和编写脚本,但显然会采取我能得到的。
答案 0 :(得分:1)
您可以在IntelliJ IDEA中编写自己的插件来完成此任务。
以编程方式,您可以利用 PSI (程序结构界面)树来搜索各种代码元素(类,变量,方法,语句等),浏览代码库然后执行任何操作你需要做的。
以下是一些参考资料:
您需要做的所有事情(查找实现,搜索调用,搜索特定语句的方法)都是可能的。
如果您下载IntelliJ IDEA社区版的源代码,您可以查看代码并查看这些内容是如何完成的。
或者您可以在此处发布特定问题(使用intellij-plugin
标记),像CrazyCoder这样的人可能非常友好地帮助您:)
关于代码库的范围(你说1 GB?),你只需要尝试一下,看看你如何去做。最糟糕的情况是,您可以分析部分代码库。
在任何情况下,IntelliJ IDEA中的插件开发都非常强大 ,我建议您使用此方法进行任何类型的Java代码分析或重构,您希望自己以编程方式进行控制(并且尚未涵盖开箱即用的重构)。
祝你好运!答案 1 :(得分:0)
六年后,所以这可能对您没有太大帮助。也许会帮助别人...
我有许多有用的Eclipse JDT搜索方法here,它们使用SearchEngine等。例如:
/**
* Collects the methods that access the specified member
* @param element the field or method whose accessors are being determined
* @param scope the elements being examined, e.g. this class or this package
* @return the collection of methods that access the indicated member
*/
public static Set<IMethod> calculateCallingMethods(
IJavaElement element,
IJavaSearchScope scope)
throws CoreException {
SearchEngine searchEngine = new SearchEngine();
SearchParticipant[] participants =
new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() };
SearchPattern callingMethodPattern = SearchPattern.createPattern(
element, REFERENCES);
MethodCollector methodCollector = new MethodCollector();
searchEngine.search(callingMethodPattern, participants, scope,
methodCollector, null);
Set<IMethod> callers = methodCollector.getResults();
return callers;
}