Repository navigation
NanoDecompiler v1.9.155
🚀 NanoDecompiler 1.9.155
📋 Список изменений
Пакет из 20 масштабных улучшений читаемости (ReadUpd 1..20) и Исправление системных ошибок
- 20 проходов повышения читаемости декомпилированного кода Java (Readability Engine 1..20):
- ReadUpd 1: Десугаринг составных присваиваний — преобразование
x = x + 1вx++,x = x - 1вx--,x = x + yвx += y, а также-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=. - ReadUpd 2: Очистка избыточных квалификаторов
this.на обращениях к полям и методам при отсутствии затенения параметров. - ReadUpd 3: Нормализация булевых сравнений — свертка
cond == trueвcond,cond == falseв!cond,!(a == b)вa != b,!(a < b)вa >= b. - ReadUpd 4: Удаление пустых блоков — автоматическое отсечение пустых веток
else {}, пустыхfinally {}, пустых блоков и бесполезных выражений-стейтментов (42;,x;). - ReadUpd 5: Нормализация
while (true)— трансформация цикловwhile (true) { if (cond) break; ... }в чистые и понятныеwhile (!cond) { ... }с сохранением кода из веток else. - ReadUpd 6: Уплощение guard-clause — распознавание безусловных выходов (
return,throw,break,continue) и разворачивание глубоко вложенных ветокelseна верхний уровень метода. - ReadUpd 7: Рекурсивное устранение избыточных
elseпосле терминальных операторов во всех вложенных структурах кода. - ReadUpd 8: Шестнадцатеричное форматирование битовых масок и цветов — вывод
0xFF,0xFFFF,0xFFFFFF,0xFF00,0x7FFFFFFF,0xFFFFFFFFLвместо громоздких десятичных чисел в побитовых операциях. - ReadUpd 9: Инлайнинг стандартных именованных констант Java — подстановка
Integer.MAX_VALUE,Integer.MIN_VALUE,Long.MAX_VALUE,Long.MIN_VALUE,Math.PI,Math.E. - ReadUpd 10: Интеллектуальная минимизация скобок — устранение избыточных пар круглых скобок на основе иерархии приоритетов операторов Java.
- ReadUpd 11: Дедупликация
instanceofи приведений типов — удаление дублирующихся кастов(T)(T)xи устранение избыточных null-проверокx != null && x instanceof T->x instanceof T. - ReadUpd 12: Инлайнинг
String.valueOf(x)— автоматическое упрощение конкатенаций"str" + String.valueOf(x)в"str" + xи очистка вызовов.append(String.valueOf(x)). - ReadUpd 13: Свертка тернарных операторов — упрощение выражений вида
cond ? true : falseвcond,cond ? false : trueв!cond,!cond ? a : bвcond ? b : a. - ReadUpd 14: Десугаринг return-тернарников — объединение
if (cond) return a; else return b;в компактное и выразительноеreturn cond ? a : b;. - ReadUpd 15: Пропагация одноразовых булевых флагов — инлайнинг синтетических временных переменных
boolean flag = cond; if (flag)напрямую в условия переходов. - ReadUpd 16: Группировка multi-catch блоков Java 7+ — объединение идентичных обработчиков исключений в один блок
catch (IOException | SQLException e) { ... }. - ReadUpd 17: Умное переименование Bukkit / Minecraft / Java переменных — замена обфусцированных и синтетических имен
var1,loc2на идиоматичные типизированные имена:Player player,Location location,World world,ItemStack itemStack,Block block,CommandSender sender,UUID uuid,Plugin plugin,Inventory inventory,File file,Path path,StringBuilder sb,Exception e. - ReadUpd 18: Десугаринг циклов foreach (enhanced for-loop) — распознавание итераций по массивам
for (int i = 0; i < arr.length; i++) { T item = arr[i]; ... }и трансформация вfor (T item : arr) { ... }. - ReadUpd 19: Устранение невозможных null-проверок — упрощение условий вида
new Object() != nullвtrueиnew Object() == nullвfalse. - ReadUpd 20: Финальная санитарная очистка форматирования — удаление паразитных точек с запятой, нормализация отступов и ликвидация мертвых узлов AST.
- ReadUpd 1: Десугаринг составных присваиваний — преобразование
- Исправление системных ошибок из файла пофиксить.txt на Рабочем столе:
- PowerShell PATH (
main.ts): переход на-EncodedCommandв кодировке UTF-16LE Base64 с явными разделителями команд, полностью устраняющий ошибки кавычек иUnexpectedToken. - Распаковка архивов 7za из ASAR (
archiveExtractor.ts&package.json):- Настроена директива
asarUnpackдля7zip-bin. - Добавлено автоматическое самоизвлечение
7za.exeво временный каталог%TEMP%\NanoDecompiler\bin\7za.exeпри попытке запуска из виртуального архиваapp.asar. - Реализован отказоустойчивый fallback
extractZipFallbackчерез встроенный в Windows PowerShellExpand-Archive.
- Настроена директива
- Синхронизация обновления движка (
updater.ts&main.ts):- Добавлен автоматический сброс кэша версии движка
resetEngineVersionCache()при установке обновления. - Реализована синхронизация обновленного
NanoDecompilerCLI.exeв директорию установленной программыAppData\Local\Programs\nano-decompiler-gui\resources\engine.
- Добавлен автоматический сброс кэша версии движка
- PowerShell PATH (
📦 Загрузки
| Файл | Описание | Версия |
|---|---|---|
NanoDecompiler-Client-Setup.exe |
Клиент Windows (GUI, инсталлятор) | v1.9.155 |
NanoDecompiler-Client.AppImage |
Клиент Linux (GUI, AppImage) | v1.9.155 |
NanoDecompiler-Client.dmg |
Клиент macOS (GUI, DMG) | v1.9.155 |
NanoDecompilerClApi-windows.exe |
Движок Windows (CLI + API) | v1.9.155 |
NanoDecompilerClApi-linux |
Движок Linux (CLI + API) | v1.9.155 |
NanoDecompilerClApi-macos |
Движок macOS (CLI + API) | v1.9.155 |
versions.json |
Технический файл автообновления | - |
Как проверялось
Все три клиентских сборки (Windows/Linux/macOS) и все три ClApi-бинарника перед публикацией прогонялись на тестовом .jar-плагине прямо в этом workflow.