Categorías
Java Development Tools (JDT)

Tutorial de Eclipse JDT – Motor de búsqueda Java – Un ejemplo de trabajo simple

Este articulo pertenece a Serie de tutoriales Eclipse JDT.

El motor de búsqueda JDT Java proporciona una función para buscar rápidamente proyectos Java en el espacio de trabajo para elementos Java, como referencias de métodos, declaraciones de campo, implementadores de una interfaz, etc.

Hay principalmente 4 pasos involucrados en una búsqueda:

  1. Crea un patrón de búsqueda
  2. Crea un alcance de búsqueda
  3. Definir recopilador de resultados
  4. Iniciar busqueda

El siguiente ejemplo sigue esos pasos. Hay más opciones para cada uno de esos pasos; consulte la referencia para conocer más flexibilidades.

public Object execute(ExecutionEvent event) throws ExecutionException {
 
	// step 1: Create a search pattern
	// search methods having "abcde" as name
	SearchPattern pattern = SearchPattern.createPattern("abcde",
			IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS,
			SearchPattern.R_EXACT_MATCH);
 
	// step 2: Create search scope
	// IJavaSearchScope scope = SearchEngine.createJavaSearchScope(packages);
	IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
 
	// step3: define a result collector
	SearchRequestor requestor = new SearchRequestor() {
		public void acceptSearchMatch(SearchMatch match) {
			System.out.println(match.getElement());
		}
	};
 
	// step4: start searching
	SearchEngine searchEngine = new SearchEngine();
	try {
		searchEngine.search(pattern, new SearchParticipant[] { SearchEngine
						.getDefaultSearchParticipant() }, scope, requestor,
						null);
	} catch (CoreException e) {
		e.printStackTrace();
	}
 
	return null;
}
  Utilice ASTParser para analizar un proyecto Java

Resultado:

abcde () (no abierto) [in test [in test.java [in [in src [in test]]]]]

Puede crear un alcance de búsqueda utilizando el método createJavaSearchScope, luego necesita obtener los parámetros necesarios.

public Object execute2(ExecutionEvent event) throws ExecutionException {
 
	IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
	IProject[] projects = root.getProjects();
 
	for (IProject project : projects) {
		IJavaProject javaProject = JavaCore.create(project);
		IPackageFragment[] packages = null;
		try {
			packages = javaProject.getPackageFragments();
		} catch (JavaModelException e) {
			e.printStackTrace();
		}
 
		// step 1: Create a search pattern
		SearchPattern pattern = SearchPattern.createPattern("abcde",
				IJavaSearchConstants.METHOD,
				IJavaSearchConstants.DECLARATIONS,
				SearchPattern.R_EXACT_MATCH);
 
		// step 2: Create search scope
		 IJavaSearchScope scope = SearchEngine.createJavaSearchScope(packages);
 
		// step3: define a result collector
		SearchRequestor requestor = new SearchRequestor() {
			public void acceptSearchMatch(SearchMatch match) {
				System.out.println(match.getElement());
			}
		};
 
		// step4: start searching
		SearchEngine searchEngine = new SearchEngine();
		try {
			searchEngine.search(pattern,
					new SearchParticipant[] { SearchEngine
							.getDefaultSearchParticipant() }, scope,
					requestor, null);
		} catch (CoreException e) {
			System.out.println("exception");
			e.printStackTrace();
		}
 
	}
 
	return null;
}
  Java: busque todas las personas que llaman a un método: obtenga todos los métodos que llaman a un método en particular

Referencias:

1. Doc para motor de búsqueda de Java
2. Tutorial de EclipseCon

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *