Consulte nuestra demostración en línea .
Bixie es una herramienta de análisis estático que detecta inconsistencias en Java Bytecode. Una inconsistencia ocurre cuando el código debe lanzar una excepción o no se puede apresurar porque debido a las suposiciones hechas por otras declaraciones.
if (operator == null) {
throw new SemanticException("Operator " + operator.getName());
}
En este ejemplo de Hive, operator.getName() es inconsistente con el operator == null .
En este ejemplo de Cassandra:
public Boolean generate() {
return identityDistribution.next() % 1 == 0;
}
Existe una inconsistencia en el Bytecode porque la expresión identityDistribution.next() % 1 == 0 aparece como una opción condicional en el Bytecode, y un caso es inalcanzable porque identityDistribution.next() % 1 devuelve un valor constante.
Bixie usa Gradle para construir:
git clone https://github.com/SRI-CSL/bixie.git
cd bixie
./gradlew shadowJar
Para verificar si todo funciona, ejecute bixie en sí mismo:
cd build/libs/
java -jar bixie.jar -j ../classes/main/
Para su conveniencia, hay un script de Python (Runner/Runner.py) que determinará automáticamente qué clases de uso usar y dónde se generan los archivos de clase, y luego invocará Bixie. Funciona para proyectos construidos con hormiga, maven o gradle. Por ejemplo:
cd <path-to-project>
mvn clean
python <path-to-bixie>/runner/runner.py -- mvn compile
Este comando ejecutará el proceso de compilación Maven para el proyecto y raspe su salida para los casos en que se llamó a Javac, luego alimentara esa información a Bixie. Asegúrese de limpiar antes de construir, ya que la herramienta solo puede detectar archivos que realmente se compilaron mientras observa.
Bixie no es sólido. Muchas características de Java, como la concurrencia y la reflexión, no son manejadas por Bixie y pueden provocar falsas alarmas. Bixie también a veces detecta inconsistencias en el código de byte que no tienen una inconsistencia correspondiente en el código fuente. Por ejemplo, las elecciones condicionales con conjunciones en la condición a veces aumentan las falsas alarmas.