2009-07-07 65 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 - 因爲這只是一種專門用於國際化的代碼執行靜態分析的工具。它也適用於各種編程語言。支持嵌入字符串的檢測和糾正(字符串外部化功能),可能的語言環境限制方法/函數/類,具體取決於編程語言和要求,以及其他問題,如編程模式和嵌入式圖像。有一些默認的「規則集」可以爲您提供一個良好的開始,然後您可以自定義您的規則以檢測和過濾問題。此外還有一個底層數據庫,可幫助您在與他們合作時標記或跟蹤國際化問題。有一個服務器組件,您可以在其中與團隊成員創建和共享規則集,然後在您的計算機上本地運行的桌面和命令行客戶端分析源代碼,因此您不會從本地計算機發送任何代碼或報告。