Skip to content

JavaLabs2025/bytecode-manipulation-vitaya-para

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Review Assignment Due Date Разработать standalone приложение, которое имеет следующие возможности:

Принимает на вход проект в виде .jar файла С помощью библиотеки для манипуляции байткодом (ASM) посчитать и вывести следующие метрики:

  • Максимальная глубина наследования
  • Средняя глубина наследования
  • Метрика ABC (assignment-ом является факт записи в локальную переменную istore, astore и т.д.)
  • Среднее количество переопределенных методов
  • Среднее количество полей в классе

Метрики должны выводиться как в консоль, так и в заданный пользователем файл в машинно-читаемом формате JSON

Дедлайн: 03.12.2025 23:59

Методические материалы: используйте visitor-ы

Гайд по использованию ASM: https://asm.ow2.io/asm4-guide.pdf

Дополнительное (необязательное задание): сделайте агента для сбора покрытия по строчкам

Запуск

# Байт-код
./gradlew run --args="print src/main/resources/sample.jar"

# Метрики
./gradlew run --args="metrics src/main/resources/sample.jar"

# Метрики в файл
./gradlew run --args="metrics src/main/resources/sample.jar src/resources/output.json"

About

bytecode-bytecode-manipulation-bytecode-template created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 98.0%
  • Kotlin 2.0%