2009-07-07 6 views
3

国際化対応のアプリケーションを監査できるツール(フリー/コマーシャル)はありますか? (またはローカライズ-の準備、あなたが好む場合)国際化の問題を検出するための静的分析ツール

で主に興味を持って:

マルチリンガルの実装・テスト

 
    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

4つのカテゴリごとに具体的なチェックの例を挙げることができますか? –

+0

私は頭の上からいくつかの例を追加しました。これが役に立てば幸いです –

答えて

0

私はIntelliJ IDEAのコードアナライザを研究しましたが、あなたが要求したコードアナライザがあります。これは、Javaに特化した商用IDEですが、他の言語も知っています。

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

+0

多分私は何かが不足しています:http://www.jetbrains.com/idea/documentation/inspections.jsp does notはポイント3と4を行います。 –

1

はあなたの例をもとに、あなたは、ほとんどの入力何とか 国際化されていない出力を生成 機能を診断します。

アラートの場合、 によって生成されていない文字列を取得する印刷呼び出し を見つける必要があります。

jdbcの場合、ロケール固有ではない順序制約 を識別したいとします。

さまざまな日付の場合、 がロケール固有の回答を生成することが知られている日付ルーチンが必要です。

JavaScriptの検証では、意図を推測するのが難しいです。 が特定のロケールに配線されていると診断されている場合があります。これは多くの場合、 のように思われます。範囲チェックのために、より小さいか大きいかについてキャラクタを別のキャラクタと比較する何かをキャプチャすることが望ましいです( )。有線ロケール関数について

が、それは(おそらく引数の数によって、いくつかのオーバーロードの解決、 などが存在しなければならないが)ちょうど彼ら の名前を知ることは十分だろうと思われる、のNumberFormatそう(?、?)悪いです、 およびNumberFormat(?、?、?)はOKです。

なぜ悪いケースで見た目が悪いのですか?

範囲の場合、[exp] < [literal-char]または[exp] < [literal-string]の形式の式 を認識する必要があります。 "<"を検索する正規表現。+」十分なようであろう

が、これらは見逃してしまうこと

EDITを(下のコメントから、そこに共通する例です:。? 『私の正規表現を使用してきたけど...』) あなたがあるツールをしたい場合正規表現よりも深い場合は、 の言語解析、名前/型の解決に行かなければならず、 データフロー解析が役立つでしょう。 複数の(コンピュータ)言語を処理したいので、ツールは多言語でなければなりません可能な場合 アプリケーションに関連する具体的なケースについて を確認するようにカスタマイズできるように思われます。

DMS Software Reengineering Toolkit には、Java、JavaScript、SQLの パーサーが含まれます。それはあなたがそれを使用する前にそれを行う必要があるので、 をカスタマイズするように設計されています。

+0

残念ながら、私はこれらの悪いケースを探すために正規表現を使用していますがfinddug-typeのソフトウェアであるpmdが大好きです。良い連続的な統合コンポーネントのために作る –

+0

regexpがうまくいかないという特殊なケースを表示できますか?私ははるかに洗練された分析エンジンの説明を追加しましたが、正規表現が十分あれば実際にそこに行きたくはありません。 –

2

Globalyzer-http://lingoport.com/globalyzerを見てください。ちょうど国際化のためのコードで静的解析を実行するためのツールです。それはあまりにも様々なプログラミング言語で動作します。埋め込み文字列の検出と修正(文字列の外部化機能もサポート)、プログラミング言語や要件に応じたロケール制限メソッド/関数/クラス、プログラミングパターンや埋め込みイメージなどのその他の問題をサポートします。あなたには良いスタートをもたらすデフォルトの「ルールセット」があり、問題の検出とフィルタリングの両方のルールをカスタマイズすることができます。さらに、基礎となるデータベースがあり、作業中に問題にタグ付けしたり追跡したりするのに役立ちます。チームメンバーとルールセットを作成して共有するサーバーコンポーネントがあります。次に、マシン上でローカルに実行されるデスクトップおよびコマンドラインクライアントがソースを分析して、ローカルマシンからコードやレポートを送信しないようにします。

+0

興味深い..私の質問に列挙したすべての問題を捕らえるということは、あなたのチーム(あなたのプロフィールに基づいて、私はあなたがlingoportから来たものと仮定している)に確認できますか?私はあなたの答えを承認します。 –

関連する問題