Rubysonar es un indexador semántico para Ruby, que realiza un análisis interprocedural para inferir tipos. Es una de las tecnologías subyacentes que impulsa el Sitio de búsqueda de código SourceGraph.
Rubysonar se modela después de Pysonar2, que realiza un análisis similar para Python y ha estado en uso por SourceGraph y Google. Para comprender sus propiedades técnicas, consulte las publicaciones de mi blog:
mvn package
Rubysonar usa el intérprete irb para analizar el código Ruby, así que asegúrese de tenerlo instalado y apuntado por la variable de entorno PATH .
Rubysonar se diseña principalmente como una biblioteca para IDES y otras herramientas de desarrollador, por lo que su interfaz puede no ser tan atractiva como una herramienta de usuario final, pero para su comprensión de las capacidades de la biblioteca, se ha construido un programa de demostración razonablemente agradable.
Puede crear un simple "navegador de código" de su código Ruby con la siguiente línea de comando:
java -jar target/rubysonar-0.1-SNAPSHOT.jar /path/to/project ./html
Esto tomará unos minutos. Debe encontrar algunos archivos HTML interactivos dentro del directorio HTML después de este proceso.
Rubysonar: un indexador semántico avanzado para Ruby
Copyright (c) 2013-2019 Yin Wang
Redistribución y uso en formularios de origen y binarios, con o sin modificación, se permiten siempre que se cumplan las siguientes condiciones:
Las redistribuciones del código fuente deben retener el aviso de derechos de autor anterior, esta lista de condiciones y el siguiente descargo de responsabilidad.
Las redistribuciones en forma binaria deben reproducir el aviso de derechos de autor anterior, esta lista de condiciones y el siguiente descargo de responsabilidad en la documentación y/u otros materiales provistos con la distribución.
El nombre del autor no puede usarse para respaldar o promover productos derivados de este software sin un permiso previo por escrito específico.
Este software es proporcionado por el autor `` como está '' y cualquier garantía expresa o implícita, incluidas, entre otros, las garantías implícitas de comerciabilidad y idoneidad para un propósito particular se renuncian. En ningún caso, el autor será responsable de ningún daño directo, indirecto, incidental, especial, ejemplar o consecuente (incluida, entre otros, la adquisición de bienes o servicios sustitutos; pérdida de uso, datos o ganancias; o interrupción comercial), sin embargo, se causa que sea la teoría de la responsabilidad, incluso en el contrato, la responsabilidad estricta o la torta (incluyendo negligencia o de otra manera) de cualquier manera de la manera de la teoría de la responsabilidad, incluso la responsabilidad, la estricta o torta (incluida la negligencia o de otra manera) de cualquier manera que surja de la teoría de la teoría de la responsabilidad, incluso la responsabilidad estricta, incluso la negligencia (incluida la negligencia o de otra manera) de la manera de ser de cualquier manera de la teoría de la responsabilidad, incluso la responsabilidad, incluso la descuidada (incluyendo negligencia o de otra manera) de cualquier manera de la teoría de la teoría de la responsabilidad. Posibilidad de tal daño.