构建工具#
dailyBuildMSVC.py#
用于 Windows 每日构建的构建脚本。调用 cmake 并触发发布版和调试版的构建,以及测试和安装程序/压缩包的创建。依赖于成功的 Linux 构建以获取文档。
dailyUpdateMakeGCC.sh#
用于 Linux 和 macOS 每日构建的构建脚本。调用 cmake 并触发发布版和调试版的构建,以及测试和压缩包的创建。
代码清理工具#
checkStyle.py#
检查 .java、.cpp、.h 和 .py 文件的许可证头是否正确,并应用 autopep8 和 flake8 以确保符合 PEP 8 标准。同时对所有 .java、.cpp 和 .h 文件应用 astyle。要检查的源代码树位置作为可选参数给出,或相对于脚本位置确定。此调用是我们夜间测试的一部分。如果使用 --fix 标志调用,该脚本可以修复一些小的空白/命名问题。PEP 8 检查相当耗时,因此如果只需要检查头文件,请使用 --skip-pep 选项运行。
调用:
checkStyle.py
checkStyle.py --fix <SUMO_HOME>/tools
文档工具#
buildHTMLDocs.py#
将 wiki 文档转换为静态 HTML 页面。它会移除 wiki 导航并添加用户文档导航,同时保持内容不变。如果调用 make docs,此脚本会被主 Makefile 调用。如果脚本被调用时带有参数,它会尝试获取指定名称的 wiki 站点,否则会检索目录中列出的所有站点。调用 buildHTMLDocs.py --help 以获取完整的选项列表。
调用:
buildHTMLDocs.py SUMO
checkAuthors.py#
检查所有源文件的日志中的作者和 "thanks"(致谢),并检查它们是否出现在文件头中。可以选择尝试修复文件头,并在需要时更新全局 AUTHORS 文件。
调用:
checkAuthors.py
翻译工具#
updateMessageIDs.py#
SUMO 在 gettext 中使用源代码中的原始字符串作为消息 ID。所有翻译都绑定到消息 ID。该脚本有助于在保留现有翻译有益的情况下更改消息 ID/原始字符串。由于相同的原始字符串在 gettext 中被分组到相同的消息 ID(不同上下文除外),因此不应直接在源代码中编辑字符串。该脚本的工作流程如下:
- 调用脚本
i18n.py以确保.po文件与当前源代码对应。 - 为每个可用的
.pot文件创建一个英文到英文的.po文件,其中 msgid 和 msgstr 值相同。 - 用户可以选择在此文件中手动编辑 msgstr 值以反映所需的更改,或使用脚本的预定义操作之一(例如简单的搜索/替换)。
- 脚本读取更改和出现位置,以修补源代码中的相应行。
.po翻译文件也会被修补。如果更改的 msgid 之前已经存在,则两个条目将被合并。
以下是脚本提供的选项及其使用方法。
- --lang:仅更新与给定语言代码序列对应的
.po文件 - --start:将在
**SUMO_HOME**/data/po目录中创建/覆盖英文到英文的.po文件 - --strict:仅当 msgid 值与给定的搜索字符串完全对应时才更改
- --replace:后跟偶数个参数,其中奇数字符串是搜索模式,随后的字符串是相应的替换字符串
- --search-prefix
, --search-suffix :将这些字符中的任何一个作为前缀/后缀添加到任何给定的搜索模式中(不与 --strict 一起使用) - --apply:修补源代码和
.po翻译文件 - --remove-obsolete:直接删除已过时的条目(否则,gettext 中的出现注释只会被移动到替换的 msgid)
- --process-languages:对翻译后的 msgstr 值也应用搜索/替换逻辑
- --sumo-home
:要使用的 SUMO 主目录 - --placeholder
:在 msgid 中使用的占位符字符串 - --numbered-placeholders:在每个 msgid 内部,为每个由 --placeholder 给出的占位符添加一个顺序编号,从 0 开始
一个替换所有语言中缩写 "id" 的小写使用为大写版本 "ID" 的示例调用:
updateMessageIDs.py --start --replace "id" "ID" --apply
如果更改是在英文到英文的 .po 文件中手动完成的,则需要调用脚本两次。第一次调用仅用于创建要编辑的文件:
python updateMessageIDs.py --start
然后在第二次调用中处理更改:
python updateMessageIDs.py --apply
obsoleteTranslations.py#
该脚本处理由于源代码中原始字符串更改而丢失,但仍存在于 .po 翻译文件中的翻译。可以使用选项 --lang
为了编写过时翻译的协议(那些在源代码中未被引用的翻译),必须使用要写入协议的文件路径调用脚本,如下所示:
python obsoleteTranslations.py --output obsolete.txt
添加选项 --clear 将从 .po 文件中永久删除过时的翻译。
有一个名为 --patch 的选项,用于在已知更新的消息 ID/当前源字符串的情况下重新链接过时的翻译。 脚本提供了一系列参数,这些参数形成成对的首先是过时的消息 ID,然后是新的更新后的 ID。
python obsoleteTranslations.py --patch "Add Sidewalk" "Add sidewalk" "Overrids default shape of pedestrian sidewalk" "Overrides default shape of pedestrian sidewalk"
脚本会查看翻译文件,并将实际翻译从过时条目移动到当前条目(仅当当前条目仍为空时)。如果过时条目的内容已转移到当前条目,则该过时条目将被删除。
