LINUX.ORG.RU

Автоматическая конвертация кода ;)

 , ,


0

1

Привет!

Вдруг кто-то знает - есть ли инструменты для автоматической конвертации кода на python в java (именно исходников)?

Возникла задача переписать под сотню тестов на java.

Код не сложный, а точнее это тесты на pytest, и в основном, все что они делают это посылают http запросы (модулем requests), потом проверяют json ответа.

Руками это делать лень 8( Если есть какие-то недопроверенные академические проекты - буду рад ссылкам.

★★★

Возникла задача переписать под сотню тестов на java.

тесты на pytest

Быстрее будет переписать сразу вручную, чем разбираться с возможными ошибками трансляции, даже если такая найдётся. Ещё и у pytest есть какие-то свои идиомы, которые вряд ли легко лягут на Java.

Есть ещё вариант — спихнуть работу на другого человека. Но этот вариант уже кто-то воплотил, да?

i-rinat ★★★★★ ()

Сомневаюсь, что существует какой то инструмент под эту конкретную задачу.

Если цель не переделать именно код, заменив синтаксис на джавовский, то может быть заюзать jython?

eternal_sorrow ★★★★★ ()

Есть одна мыслишка, но она попахивает костылями:

Питоновый код с помощью Jython компилишь в классы, потом декомпилируешь в Java код. Читаемым не будет, сразу говорю.

java_util_Random ★★ ()

Я уверен что преобразовать Python код в AST можно чуть ли не встроенными средствами, учитывая как легко под него сотнями клепают инструменты для статического анализа, типизации, линтеры, форматтеры и т.д. А когда у тебя есть AST - бери и строй по нему код на любом языке, если сможешь замаппить соответствующие конструкции.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

АСТ - это замечательно, вопрос как определять типы. Или оборачивать все переменные в какой-то класс DynamicVariable, который будет в рантайме определять что делать. Та еще хренотень.

provaton ★★★★★ ()
Ответ на: комментарий от provaton

Я так понял у ТС типовые тесты и с разными типами можно не заморачиваться. Кроме того, явного упоминания типов иногда можно избежать - не знаю как там в Java, но в плюсах можно порождать auto переменные. Ну и обычно DynamicVariable в том или ином виде так и так присутствует при парсинге JSON в статически типизируемых языках. В виде какого-то Variant.

slovazap ★★★★★ ()

Ознакомьтесь с основами Python и Java, после чего неожиданно догадаетесь, что ваше желание невыполнимо (и это хорошо, так не способствует увеличению количества быдлокода).

Partisan ★★ ()

Сотня тестов имхо не очень много, они же там не портянками по 2к строк, да?

В общем, мне было бы проще вручную, но я уже знаю оба языка, не то, чтобы они сложные, но время вникнуть уйдет.

Еще можно попробовать уменьшить количество тестов и использовать что-то вроде property-based testing. Все равно тесты 1 к 1 не перенести.

anonymous ()

Jython c 2015 года как Ленин - не жив и не хоронят.

Вот вариант -

https://github.com/natural/java2python

Пережил Jython ровно на 1 год.

Конвертер p2j (про который в вашем вопросе)

https://github.com/chrishumphreys/p2j

Не вы первый - https://www.quora.com/Is-there-an-online-tool-to-convert-Python-code-into-Jav...

Bioreactor ★★★★★ ()
Последнее исправление: Bioreactor (всего исправлений: 3)