LINUX.ORG.RU

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

 , ,


0

1

Привет!

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

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

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

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

★★★★

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

тесты на pytest

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

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

i-rinat ★★★★★
()

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

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

eternal_sorrow ★★★★★
()

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

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

Deleted
()

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

anonymous
()
Ответ на: комментарий от Deleted

Без jython’овского рантайма не заработает же. Или я не прав?

eternal_sorrow ★★★★★
()

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

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

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

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

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

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

‘Automating’ comes from the roots ‘auto-’ meaning ‘self-’, and ‘mating’, meaning ‘screwing’.

MyTrooName ★★★★★
()

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

Partisan ★★★★
()

Скорее всего — никак. Если по-хорошему. Потому что типизация.

Miguel ★★★★★
()

Сотня тестов имхо не очень много, они же там не портянками по 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)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.