是否有可以审核国际化申请的工具(免费/商业)? (或者如果您愿意,可以使用本地化准备)
主要感兴趣:
多语言实施测试
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-validation测试
Examples: * [javascript] checkIsDecimal { //decimal point checked against "." } * [javascript] hardcoded character range [A-z]
干杯。
答案 0 :(得分:2)
看看Globalyzer - http://lingoport.com/globalyzer - 正是这个,一个专门针对国际化进行代码静态分析的工具。它也适用于各种编程语言。支持嵌入字符串的检测和校正(字符串外部化功能),潜在的语言环境限制方法/功能/类,具体取决于编程语言和要求,以及编程模式和嵌入式图像等其他问题。有一些默认的“规则集”可以帮助您获得良好的开端,然后您可以自定义检测和过滤问题的规则。此外,还有一个底层数据库,可帮助您在使用时标记或跟踪i18n问题。有一个服务器组件,您可以在其中与团队成员创建和共享规则集,然后在计算机上本地运行的桌面和命令行客户端分析您的源,因此您不会发送任何代码或报告本地计算机。
答案 1 :(得分:1)
根据您的示例,您最想诊断 产生输出的函数,其输入不是某种方式 国际化。
因此,对于警报情况,您要查找任何打印呼叫 获取非生成的字符串 可能是几个众所周知的翻译例程之一。
对于jdbc情况,您希望识别排序约束 这不是特定于语言环境的。
对于各种日期案例,您需要日期例程 众所周知,它会产生特定于语言环境的答案。
javascript验证更难以猜测; 大概你想要诊断已知的功能 连接到特定的区域设置;这看起来很像 日期的情况。对于范围检查,您需要捕获任何内容 将一个字符与另一个字符进行比较的次数小于或大于。
对于有线语言环境功能,它似乎只是知道它们 名字就足够了(虽然可能需要一些重载决议, 例如,通过参数的数量),所以NumberFormat(?,?)是坏的, 和NumberFormat(?,?,?)没问题。
为什么你不能写一个正则表达式来查看(恶意)的坏情况?
对于范围情况,您只需要识别表达式 形式为[exp]< [literal-char]或[exp]< [文字串。 寻找“<'。+”的正则表达似乎已经足够了。
是否存在这些遗漏的常见情况?
编辑(来自下面的评论:“我一直在使用正则表达式但是......”) 如果你想要一个比regexp更深的工具,你几乎就是这样 必须去语言解析,名称/类型解析,并具有 数据流分析会有所帮助。既然你想要处理 多种(计算机)语言,该工具必须具有多语言能力。 并且看起来您希望能够自定义它以进行检查 与您的申请相关的具体案例。DMS Software Reengineering Toolkit 拥有所有这些属性,包括 解析Java,JavaScript和SQL。它旨在定制, 所以你必须在使用它之前这样做。
答案 2 :(得分:0)
我研究过IntelliJ IDEA的代码分析器,它确实有你要求的那些。它是一个商业IDE,专门研究java,但也了解其他语言。