2009-07-07 33 views
3

是否有任何工具(免费/商业)可以审计应用程序的国际化? (或本地化就绪,如果你喜欢)静态分析工具来检测国际化问题

主要兴趣:

Mulitlingual执行测试

 
    Examples: 
    * [javascript] alert('Oops wrong choice!'); 
    * [java] String msg = resourcebundle.getString("key.x").concat("4"); 
    * [jdbc] String query=".. order by abc"; //should be NLS_SORT or equiv. 

日期实施测试

 
    Examples: 
    * SimpleDateFormat used without Locale 
    * Apache's DateFormatUtils used 

数字实现测试

 
    Examples: 
    * NumberFormat used without Locale 

JavaScript的验证测试

 
    Examples: 
    * [javascript] checkIsDecimal { //decimal point checked against "." } 
    * [javascript] hardcoded character range [A-z] 

干杯。

+0

你能举出一个检查你的四个类别的具体例子吗? – 2009-07-22 14:58:40

+0

我已经在头顶添加了一些示例。希望这可以帮助 – 2009-07-23 05:19:11

回答

0

我研究过IntelliJ IDEA的代码分析器,它确实有你要求的。这是一个商业IDE,专门用于java,但也知道其他语言。

http://www.jetbrains.com/idea/

+0

也许我错过了一些东西:http://www.jetbrains.com/idea/documentation/inspections.jsp does not做第3和第4点。 – 2009-07-07 07:44:45

1

根据您的例子,你最想诊断产生的输出,其输入是不是莫名其妙 国际 功能。

因此,对于警报情况,您希望找到任何打印电话 ,该电话获取不是由 生成的字符串,它可能是几种众所周知的翻译例程之一。

对于jdbc情况,您希望识别不是特定于语言环境的排序约束 。

对于各种日期情况,您需要日期例程 已知可产生特定于语言环境的答案。

javascript验证在意图上难以猜测; 估计你想诊断已知的 被连接到特定区域的功能;这似乎很像 日期的情况。对于范围检查,您需要捕获任何比较字符与其他字符比较小或大于字符的任何东西 。

对于有线区域设置功能,似乎只知道它们的名称就足够了(尽管也许必须有一些重载分辨率,例如通过参数数量来设置 ),所以NumberFormat(?,?)很糟糕, 和NumberFormat(?,?,?)是可以的。

为什么你不能写一个正则表达式来查找坏的情况?

对于范围情况,您只需要识别[exp] < [literal-char]或[exp] < [literal-string]形式的表达式 。 查找“<”的正则表达式。如果你想要一个工具,它是 :+”就显得足够

是否有常见的情况是,这些将错过

编辑(从下面评论?‘我一直在使用正则表达式,但...’)比正则表达式更深,你必须去语言解析,名称/类型的分辨率,并有 数据流分析将是有益的。因为你想要处理 多(电脑)语言,该工具必须是多语言 看起来你希望能够自定义它以检查与您的应用程序相关的具体情况 。

DMS Software Reengineering Toolkit 具有所有这些属性,包括 用于Java,JavaScript和SQL的解析器。它被设计成可定制的,所以你必须在使用它之前做到这一点。

+0

不幸的是,我一直在使用正则表达式来寻找这些不好的情况,但会喜欢pmd,findbugs类型的软件。为良好的持续集成组件做好准备 – 2009-07-23 09:07:25

2

查看Globalyzer - http://lingoport.com/globalyzer - 因为这只是一种专门用于国际化的代码执行静态分析的工具。它也适用于各种编程语言。支持嵌入字符串的检测和纠正(字符串外部化功能),可能的语言环境限制方法/函数/类,具体取决于编程语言和要求,以及其他问题,如编程模式和嵌入式图像。有一些默认的“规则集”可以为您提供一个良好的开始,然后您可以自定义您的规则以检测和过滤问题。此外还有一个底层数据库,可帮助您在与他们合作时标记或跟踪国际化问题。有一个服务器组件,您可以在其中与团队成员创建和共享规则集,然后在您的计算机上本地运行的桌面和命令行客户端分析源代码,因此您不会从本地计算机发送任何代码或报告。