Существует ли рабочий инструмент Semantic Diff для C++?

Интересный вопрос, у меня будет эта проблема очень скоро. Я думаю, что пойду для 2 без любого вида хитрого материала. Разметка HTML проста, URL не переместятся в ближайшее время, и если что-нибудь будет изменено, то новая запись будет создана в django.po, таким образом, мы получим шанс рассмотреть перевод (исключая: сценарий должен проверить на пустые переводы после makemessages).

Так, в шаблоне:

{% load i18n %}
{% trans 'hello world' %}

... тогда, после python manage.py makemessages я вхожу в свой django.po

#: templates/out.html:3
msgid "hello world"
msgstr ""

, я изменяю его на свои потребности

#: templates/out.html:3
msgid "hello world"
msgstr "bonjour monde"

..., и в простых все же частых случаях я встречусь, это не будет стоить, дальше беспокоятся. Другие решения здесь кажутся довольно умными, но я не думаю, что решением проблем разметки является больше разметки. Плюс, я хочу избежать слишком большого количества запутывающего материала в шаблонах.

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

Редактирование: Я просто проверил его в документация , если Вам когда-нибудь нужны переменные в переводе, существует blocktrans.

9
задан Ira Baxter 15 April 2014 в 12:29
поделиться

4 ответа

Истинно "семантический дифф" невозможен. Более близким был бы инструмент, который сравнивал два исходных файла, чтобы увидеть, как один был получен из другого с помощью абстрактных операций редактирования (удаление, копирование, перемещение, переименование) структур программы (переменных, выражений, операторов, методов). См. Наш Smart Differencer для получения информации об инструменте, который делает это для нескольких языков, скоро появится C ++.

Март 2013 г .: поддерживаются диалекты GCC / MS C ++ 11.

3
ответ дан 5 December 2019 в 02:08
поделиться

Да, это называется «написание комментариев для коммитов» и «отслеживание проблем». Считайте это метаданными для семантического анализа.

-1
ответ дан 5 December 2019 в 02:08
поделиться

Это вообще невозможно. Одна программа не может даже сказать, завершится ли другая (известная проблема остановки ). Для более ограниченных программ (конечно ограниченные циклы и, возможно, другие ограничения) вы можете сделать больше, но это тяжелые вещи, и язык должен быть не C ++, а чем-то менее сложным, ограниченное подмножество или более простой язык в целом. Вероятно, поэтому вы не находите ничего, кроме начатого.

-2
ответ дан 5 December 2019 в 02:08
поделиться

Есть один для C, используемый разработчиками ядра Linux. Но не для C ++

http://coccinelle.lip6.fr

2
ответ дан 5 December 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: