elide index responde preguntas sobre el código de sus dependencias Maven resueltas y de las fuentes principales
compiladas de Java y Kotlin: qué dependencia define una clase, a qué hace referencia una clase y qué archivos fuente
locales usan un tipo o miembro. OpenRewrite usa el mismo índice para los tipos de las
dependencias y la selección de archivos candidatos.
Experimental en 1.6.0; el refuerzo de la compatibilidad está previsto para 1.6.1.
Construir el índice
Ejecute desde un proyecto de Elide con elide.pkl:
elide index build --layers=l1,l2,l3
elide index statusbuild resuelve las dependencias, construye las capas de dependencias solicitadas y compila las fuentes principales
de Java y Kotlin para actualizar el índice de referencias local. status informa de las capas disponibles para cada
artefacto Maven resuelto; no lista las clases locales.
Por ejemplo, un proyecto que usa Guava puede declarar:
amends "elide:project.pkl"
name = "index-demo"
dependencies {
maven {
packages { "com.google.guava:guava:33.4.8-jre" }
}
}Añada src/main/java/demo/Main.java:
package demo;
import com.google.common.collect.ImmutableList;
public class Main {
public static void main(String[] args) {
System.out.println(ImmutableList.of());
}
}Tras construir el índice, las siguientes consultas inspeccionan esta dependencia y su uso en el proyecto.
Encontrar la dependencia que define una clase
elide index resolve com.google.common.collect.ImmutableListEl primer resultado es la dirección de la clase en el classpath principal de compilación:
maven:com.google.guava:guava:33.4.8-jre/com.google.common.collect.ImmutableListSi otros artefactos indexados de ese classpath definen la misma clase, las líneas siguientes empiezan por shadows y
nombran esas direcciones. La resolución sigue el orden del classpath. Si a un artefacto anterior le falta el índice de
tipos necesario, el comando informa de la capa que falta en lugar de adivinar qué definición prevalece.
Para imprimir las entradas del classpath en el sistema de archivos, use
elide classpath. El índice de código identifica definiciones y
referencias en el código; no imprime la ruta de dependencias transitivas que introdujo un artefacto.
Inspeccionar tipos y miembros
elide index get maven:com.google.guava:guava:33.4.8-jre
elide index get maven:com.google.guava:guava:33.4.8-jre/com.google.common.collect.ImmutableList
elide index get 'maven:com.google.guava:guava:33.4.8-jre/com.google.common.collect.ImmutableList#of()'La consulta de un artefacto lista los tipos indexados. La de un tipo imprime su categoría, visibilidad, supertipos y entrada en el archivo; la de un miembro imprime la categoría, la visibilidad, si es estático o de instancia y el descriptor JVM del miembro coincidente.
| Dirección | Identifica |
|---|---|
maven:group:artifact:version | Un artefacto Maven resuelto. |
maven:group:artifact:version/ | Un tipo de ese artefacto. |
maven:group:artifact:version/ | Un método, seleccionado por tipos de parámetros. |
maven:group:artifact:version/ | Un campo. |
local:project-name/ | Un tipo local compilado, para references. |
Use nombres binarios de tipo (package.Outer$Inner para una clase anidada). Las claves de método omiten el tipo de
retorno; los constructores usan <init>(...). Ponga entre comillas las direcciones con paréntesis, # o $ para que
la shell no las interprete.
Seguir las referencias salientes
elide index references maven:com.google.guava:guava:33.4.8-jre/com.google.common.collect.ImmutableList
elide index references local:index-demo/demo.Mainreferences imprime líneas type y member para los tipos y miembros a los que hace referencia esa clase
compilada. Recibe una dirección de tipo, no de miembro. En una dirección local, el nombre del proyecto es name de
elide.pkl (o project si no tiene nombre).
Encontrar usos locales
elide index used-by com.google.common.collect.ImmutableList
elide index used-by 'com.google.common.collect.ImmutableList#of'
elide index used-by 'com.google.common.collect.ImmutableList#of()'used-by busca en el índice de referencias de las fuentes principales compiladas e imprime los archivos fuente
coincidentes con rutas relativas al paquete, como demo/Main.java. Un nombre de método sin más coincide con todas sus
sobrecargas; una lista de parámetros selecciona una firma. Los resultados se ordenan y se eliminan duplicados. Si no
hay coincidencias, no se imprime nada y el comando termina correctamente.
La consulta cubre las clases locales de Java y Kotlin, no los llamadores de todas las dependencias. Pueden faltar las referencias borradas durante la compilación, los imports sin usar, los comentarios y los usos por reflexión nombrados solo mediante cadenas. Reconstruya el índice después de cambiar las fuentes; una consulta no las compila ni actualiza las referencias locales.
Capas y actualización
| Capa | Información indexada | Usada por |
|---|---|---|
l0 | Entradas y metadatos del artefacto | Estado de artefactos y descubrimiento de recetas. |
l1 | Tipos, visibilidad, supertipos y anotaciones | Consultas de tipos y resolución de clases. |
l2 | Campos, métodos, constructores y firmas | Consultas de miembros e información de tipos para la reescritura. |
l3 | Referencias salientes a tipos y miembros | Consultas references de dependencias. |
elide index build usa por defecto las capas de dependencias l0,l1. --layers selecciona las capas que se añaden;
l0 siempre se incluye y las capas ya construidas se conservan. Incluya l1,l2 juntas para las consultas de miembros.
build actualiza el índice de referencias local con independencia de las capas de dependencias seleccionadas.
Las consultas leen los datos de índice existentes. Pueden resolver las dependencias del proyecto, pero no construyen
las capas que falten. get, references y resolve salen con 1 ante una dirección o un nombre desconocidos. Si
falta una capa necesaria, salen con 2 e imprimen un comando de construcción. Use --offline para evitar descargas
remotas de dependencias; los artefactos necesarios deben estar ya disponibles localmente.
Los datos del índice de dependencias se guardan en .dev/dependencies/index/, con clave por contenido del artefacto y
versión del formato del índice. Los datos de referencias locales se guardan en el directorio de compilación del
proyecto. La compilación ordinaria no solicita todas las capas del índice; constrúyalas explícitamente o deje que un
consumidor como OpenRewrite solicite lo que necesite.
Alcance e integración con herramientas de compilación
El índice de dependencias cubre los JAR de Maven resueltos sin clasificadores. Los paquetes de npm y PyPI, las rutas
arbitrarias a JAR en el sistema de archivos y las salidas de proyectos hermanos del espacio de trabajo no son
entradas del índice de dependencias. resolve busca en los artefactos Maven indexados del classpath principal de
compilación; no resuelve clases locales ni clases del JDK. Las direcciones locales admiten por ahora references,
mientras que used-by busca en el índice local por nombre de tipo o miembro.
Los comandos usan una definición de proyecto elide.pkl. Usar el compilador de Elide mediante el
Plugin de Maven, el Plugin de Gradle o las
reglas de Bazel no llena este índice a partir de los grafos de dependencias de esas
herramientas. Defina las fuentes y dependencias equivalentes en un proyecto de Elide para usar estas consultas.
Consulte Dependencias para declarar dependencias y OpenRewrite para aplicar recetas con el índice.