构建

构建工具#

dailyBuildMSVC.py#

用于 Windows 每日构建的构建脚本。调用 cmake 并触发发布版和调试版的构建,以及测试和安装程序/压缩包的创建。依赖于成功的 Linux 构建以获取文档。

dailyUpdateMakeGCC.sh#

用于 Linux 和 macOS 每日构建的构建脚本。调用 cmake 并触发发布版和调试版的构建,以及测试和压缩包的创建。

代码清理工具#

checkStyle.py#

检查 .java.cpp.h.py 文件的许可证头是否正确,并应用 autopep8flake8 以确保符合 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 文件,其中 msgidmsgstr 值相同。
  • 用户可以选择在此文件中手动编辑 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"

脚本会查看翻译文件,并将实际翻译从过时条目移动到当前条目(仅当当前条目仍为空时)。如果过时条目的内容已转移到当前条目,则该过时条目将被删除。