|
1 | | -[](https://classroom.github.com/a/9A22t-SS) |
2 | | -Разработать standalone приложение, которое имеет следующие возможности: |
| 1 | +# Bytecode Analyzer |
3 | 2 |
|
4 | | -Принимает на вход проект в виде .jar файла |
5 | | -С помощью библиотеки для манипуляции байткодом (ASM) посчитать и вывести следующие метрики: |
6 | | -* Максимальная глубина наследования |
7 | | -* Средняя глубина наследования |
8 | | -* Метрика ABC (assignment-ом является факт записи в локальную переменную istore, astore и т.д.) |
9 | | -* Среднее количество переопределенных методов |
10 | | -* Среднее количество полей в классе |
| 3 | +## Overview |
11 | 4 |
|
12 | | -Метрики должны выводиться как в консоль, так и в заданный пользователем файл в машинно-читаемом формате JSON |
| 5 | +This is a simple standalone bytecode analyzer application that analyzes Java `.jar` files using the ASM library. |
| 6 | +It calculates several code metrics and outputs them both to the console and a user-specified JSON file. |
13 | 7 |
|
14 | | -Дедлайн: 03.12.2025 23:59 |
| 8 | +## Features |
15 | 9 |
|
16 | | -Методические материалы: используйте visitor-ы |
| 10 | +The application calculates the following metrics: |
17 | 11 |
|
18 | | -Гайд по использованию ASM: https://asm.ow2.io/asm4-guide.pdf |
| 12 | +- **Maximum Inheritance Depth (MID)** |
| 13 | +- **Average Inheritance Depth** |
| 14 | +- **ABC Metric** (based on assignments - detected via `istore`, `astore`, etc.) |
| 15 | +- **Average Number of Overridden Methods per Class** |
| 16 | +- **Average Number of Fields per Class** |
19 | 17 |
|
20 | | -Дополнительное (необязательное задание): сделайте агента для сбора покрытия по строчкам |
| 18 | +Results are printed to the console or saved in a machine-readable JSON format. |
| 19 | + |
| 20 | +## Module Structure |
| 21 | + |
| 22 | +- analyzer - main module |
| 23 | +- example - example module, which classes packed in jar for analysis, see IntegrationTest.java |
0 commit comments