我尝试外化我编写的任何应用程序中使用的所有字符串(以及其他常量),原因很多,这可能是大多数堆栈溢出程序的第二天性,但我想要的一件事就是能够自动化拼写检查任何用户可见的字符串。这会带来几个问题:
如何将这样的内容合并到构建过程/测试套件中?每次更改应用程序时,有人手动拼写检查应用程序中的所有字符串是不可行的 - 并且没有机会它们将在第一次拼写正确。
答案 0 :(得分:1)
我们手动执行此操作,如果在测试过程中没有收到错误,那么它们会被QA团队接收,或者在翻译人员本地化期间或在本地化QA期间接收。然后我们提出了一个错误。
我们的大多数开发人员都不是母语为英语的人,所以对我们来说这不是一个不常见的问题。穿过裂缝的数量非常小,这对我们来说是一个令人满意的解决方案。
几百行没有任何东西100%没有错误(好吧......也许是奇怪的嵌入式代码),只要将拼写错误视为错误,不要浪费太多时间。
一旦你的应用程序成熟,超过90%的字符串不会在发行版之间发生变化,比较两个版本的资源是一个相当简单的练习,找出新的东西(先检查它们),什么是更改/更新(检查下一个)和未更改的内容(无需检查这些)
所以想想它更像是我第一次需要手动检查所有这些,而我下次只需要检查10%。现在问问自己是否仍然需要自动进行拼写检查。
答案 1 :(得分:1)
我可以想到两种方法来半自动地解决这个问题:
让编译器帮助您区分UI中使用的字符串和其他地方使用的字符串。根据其目的重载字符串数据类型的不同变体,并重载输出方法以仅接受该类型 - 这样您可以创建仅输出UI字符串的假UI,并对其进行拼写检查。
如果这是可行的,当然取决于平台和应用程序的整体架构。
另一种方法可能是简单地更新拼写检查数据库,其中包含代码中出现的所有字符串 - 注释,xpath,表名,并将其命名为 - 并将它们视为完美的cromulent。这当然会降低拼写检查的精确度。
答案 2 :(得分:1)
首先,关于字符串外部化 - GNU GetText(如果使用得当)创建的字符串文件除了字符串的实际内容之外几乎不包含任何文本(有一些标题但很容易导致拼写检查器忽略它们)。
第二件事,我要做的是在持续集成环境中运行拼写检查程序,并在外部提供错误,可能是通过Web界面,但电子邮件也可以。然后开发人员可以查看错误并在代码中修复它们或使用一些简单的界面让拼写检查知道应该忽略拼写错误(Web界面可以集成错误视图和拼写检查器界面)。
答案 3 :(得分:1)
如果您正在使用java并将本地化字符串存储在资源包中,那么您可以检查Bundle.properties文件并验证包字符串。您还可以添加一个特殊的注释注释,处理器可以使用它来确定是否应该跳过一个条目。
此方法允许您提供有关语言环境的提示,并提供在一个构建过程中检查多种语言的方法。
我无法回答你将如何执行实际的拼写检查本身,尽管我认为我所提供的内容会指导你执行拼写检查的方法。
答案 4 :(得分:-1)
使用aspell。这是一个程序,它可用于unixoids和cygwin,它可以运行在很多种源代码上。使用它。
答案 5 :(得分:-2)
首先,请不要把它放到你的构建过程中。如果我(意思是我的电脑)每次尝试调试或构建新功能时必须拼写检查网站上的所有内容,我将是一个复仇的程序员。我甚至认为这种操作不属于单元测试(你测试的是人机界面,而不是计算机界面)。
第二点,不要写脚本。你将会有很多误报,人们会停止阅读这些报告,你并没有比开始时更好。
第三点,这可能是人类最容易解决的问题:QA团队,文案撰写人,beta测试人员,翻译人员等。我建立的所有具有国际化内容的大型网站都采用相同的流程:我们采取了相同的流程来自副本编写者的副本,将其发送到翻译服务/代理商,将其放入持久层,然后部署它。测试人员(QA,开发人员,PM,设计人员等)会发现拼写或语法错误并提交错误报告。 有太多的繁文缛节和双眼,许多拼写/语法错误都会漏掉。
第四点,页面上总会出现拼写错误和语法错误。即使是主要的报纸网站也没有解决这个问题,他们的整个办公楼都充满了编辑。