Проверьте нашу онлайн -демонстрацию .
Bixie - это статический инструмент анализа, который обнаруживает несоответствия в Java Bytecode. Несоответствие возникает, когда код должен бросить исключение или недоступно, потому что из -за предположений, сделанных другими заявлениями.
if (operator == null) {
throw new SemanticException("Operator " + operator.getName());
}
В этом примере из hive operator.getName() не соответствует условному operator == null .
В этом примере от Кассандры:
public Boolean generate() {
return identityDistribution.next() % 1 == 0;
}
В байт -коде существует несоответствие identityDistribution.next() % 1 потому что выражение identityDistribution.next() % 1 == 0 .
Bixie использует Gradle для построения:
git clone https://github.com/SRI-CSL/bixie.git
cd bixie
./gradlew shadowJar
Чтобы проверить, работает ли все, запустите Bixie по себе:
cd build/libs/
java -jar bixie.jar -j ../classes/main/
Для вашего удобства существует скрипт Python (Runner/Runner.py), который автоматически определит, какие пути класса использовать и где генерируются файлы класса, а затем вызовут Bixie. Он работает для проектов, построенных с Ant, Maven или Gradle. Например:
cd <path-to-project>
mvn clean
python <path-to-bixie>/runner/runner.py -- mvn compile
Эта команда выполнит процесс сборки Maven для проекта и соскребает свои выводы для тех случаев, когда был вызван Javac, затем подайте эту информацию Bixie. Обязательно очистите перед строительством, так как инструмент может обнаружить только файлы, которые были фактически скомпилированы во время его наблюдения.
Бикси не звучит. Многие функции Java, такие как параллелизм и отражение, не обрабатываются Bixie и могут привести к ложным тревогам. Бикси также иногда обнаруживает несоответствия в байт -коде, которые не имеют соответствующего несоответствия в исходном коде. Например, условный выбор с соединениями в условиях иногда повышает ложные тревоги.