World Wide Navi ヘルプ
解析ルール

ソースコードの解析文字列の外部化宣言と関数の置換は解析ルールに基づき行われます。
解析ルールは以下のメニューのルール編集ダイアログから編集可能です。
[I18N] -> [ルール]、 [ツールバーのルールアイコン]

YouTube デモ
MP4 デモ

ルールは全てのソースの種類(プログラミング言語)に共通な5つのカテゴリから成ります。

カテゴリ

No.カテゴリ
1宣言char* str;, Integer num = 0;
2関数使用printf("%s", msg);, GetString("key1");
3文字列"hello, how are you?", "yyyy/mm/dd",
<td>Chapter1</td>, <input value="Submit">
4文字比較if ( c > 'a')
5必要キーワードsetlocale, ResourceBundle

No.1から4は、
エラー詳細ビューエラー集計ビュー重要コードビュー
エラーまたは重要コードとして報告されます。
エラー情報は国際化にとって非推奨なコード個所であり、対応が必要です。

No.5不足キーワードビュー不足キーワードとして報告されます。
これらは必要であるのに存在しないコードであり、正しく挿入される必要があります。

No.3の文字列については、文字列の外部化によって自動的に修正することができます。

No.1と2の宣言と関数使用については、宣言と関数の置換によって自動的に修正(置換)することができます。


スキップの設定

ソースコードの解析のスキップの設定を行うことができます。
これらの設定によって、特定の名前を持ったファイルやWindowsの自動生成コード, その他種類のコードを解析中にスキップすることができます。

インポート

エクスポートされたファイルのルールを現在のルールにインポートすることができます。
この操作は現在のものを消すことなしにルールをマージすることができます。


エクスポート

現在のルールをXMLとその他のファイルとして外部のディレクトリにエクスポートすることができます。

エクスポート(現在のルールのバックアップ)とインポート(バックアップしたルールを新しいデフォルトルールにマージ)は、 新しいwwnaviをインストールした時に自動で行われます。

*インポートとエクスポートによって他の人とルールを共有することができます。


共通項目

これらは全てのカテゴリに共通する項目です。

[キーワード]
非推奨な/重要な/必要なデータ型や関数名埋めこみ/推奨されない文字列のパターン表現などを記述します。
文字列のパターン表現は
Java正規表現をサポートします。
各編集ダイアログのラベルに例が示してあります。

[ライブラリ]
ライブラリ (アプリケーションの種類、フレームワークの名前など)をライブラリセレクタから選択します。
独自のライブラリもライブラリセレクタで設定することができます。
これは
ソースコードの解析のライブラリに使用されます。
('Common'は基本ライブラリであり、全ての解析に自動的に使用されます。)

*キーワードとライブラリはルールのキーであり、wwnaviはこれら2つの項目を読みルールを検索します。よってこれらは各カテゴリで重複してはいけません。

[レベル]
ルールのレベルを設定します。基本的なものには低く、高度なものには高くします。
これは
ソースコードの解析のレベルに使われます。

[説明]
説明(対応や解決のメッセージ)をメッセージセレクタから選択します。
独自のメッセージもメッセージセレクタで設定できます。
これは
結果ビュー結果レポートで使われます。

[置換候補]
エラーに対する置換候補(推奨されるデータ型、関数など)を区切り文字「,」で区切って指定します。
これは
結果ビュー結果レポートで使われます。

[参考情報]
エラーの詳しい対応方法や説明を記述した参考情報を指定します。
URLもしくはテキストファイルが選択できます。テキストファイルを選んだ場合は、参照ボタンで選ばれたファイルが作業ディレクトリにコピーされます。
これは
結果ビュー結果レポートで使われます。


カテゴリの項目

これらは各カテゴリの項目です。

宣言

[キーワード]
データ型の名前を指定してください。(例:int、String)
キーワードを参照。

[ライブラリ]
ライブラリを参照。

[レベル]
レベルを参照。

[説明]
説明を参照。

[置換候補]
置換候補を参照。

[参考情報]
参考情報を参照。

[この型を非推奨にする]
チェックした場合、この型の宣言はエラー詳細ビューエラー集計ビューに現われます。

[この型を重要コードとみなす]
チェックした場合、この型の宣言は重要コードビューに現われます。

[配列(とポインタ)のみエラーとする]
チェックした場合、配列(例: char msg[256];)とポインタ(例: char* msg;)のみエラーとなります。
これはシングルバイトのデータ(殆ど場合文字列データではない)をエラーから除外するためのフィルターです。

[以下の関数のパラメータ内の宣言はエラーとしない]
各行に関数名を指定して下さい。
これはシステムで定義されたパラメータをエラーから除外するためのフィルターです。

[以下の指定子または修飾子を持つ宣言はエラーとしない]
各行に指定子または修飾子(例: unsigned、 const、 static)を指定してください。
これはシステムの定数またはバイナリデータをエラーから除外するためのフィルターです。

関数使用

[キーワード]
関数の名前を指定してください。(例:printf、toString)
キーワードを参照。

[ライブラリ]
ライブラリを参照。

[レベル]
レベルを参照。

[説明]
説明を参照。

[置換候補]
置換候補を参照。

[参考情報]
参考情報を参照。

[この関数を非推奨とする]
チェックした場合、この関数使用はエラー詳細ビューエラー集計ビューに現われます。

[この関数を重要コードとみなす]
チェックした場合、この関数使用は重要コードビューに現われます。

[パラメータのエラー情報]
有効/無効な値を各パラメータにパラメータ番号によって指定できます。
値はJava正規表現をサポートします。

文字列

[キーワード]
リテラルもしくは正規表現を指定してください。(例:Hello、[a-zA-Z])
キーワードを参照。
文字列の場合、"*(全データ)"は全ての文字列を表わし、その他は指定された正規表現にマッチする文字列を表わします。

[ライブラリ]
ライブラリを参照。

[レベル]
レベルを参照。

[説明]
説明を参照。

[参考情報]
参考情報を参照。

[この文字列を外部化する]
チェックした場合、このルールにマッチした文字列は文字列の外部化によって自動的に外部化されます。
チェックしない場合は、修正されずただエラーに現われるのみです。

[以下のルールを例外文字列として使う]
選択した場合、登録されたルールにマッチする文字列はエラーから除外されます。
例外文字列は、
Java正規表現や関数名、プリプロセッサー名、変数名、指定子または修飾子、タグ属性名によって指定できます。
例)
"123"や"+/-"といった記号または数値の文字列は
正規表現'([\p{Digit}\p{Punct}])+'によって除外できます。

'error("System error occurred!")'といったログ用文字列は
関数名'error'によって除外できます。

'#define APP_NAME "World Wide Navi"'といった定義文字列は
プリプロセッサー名'define'によって除外できます。

'sqlStr = "select * from mytable"'といったSQL文字列は
変数名'sql'によって除外できます。

'const string = "KEY_NAME"'といった定数文字列は
修飾子'const'によって除外できます。

'<SPAN style="color: red;"...' といったHTMLのスタイルシート文字列は
属性名'style'によって除外できます。

[以下のルールを特定文字列として使う]
選択した場合、登録されたルールにマッチする文字列のみエラーとして検出されます。
特定文字列は、Java正規表現や関数名、プリプロセッサー名、変数名、指定子または修飾子、タグ属性名によって指定できます。
例)
"abc"や"XYZ"といったアルファベット文字列のみを
正規表現'([a_zA_Z])+'によって検出できます。

'warn("Duplicated data!")'といった警告文字列のみを
関数名'warn'によって検出できます。

'#include "wwnavi.h"'といったインクルードされたファイルの文字列のみを
プリプロセッサー名'include'によって検出できます。

'cmd = "copy /x "'といったコマンド文字列のみを
変数名'cmd'によって検出できます。

'static string = "My Name"'といった静的文字列のみを
修飾子'static'によって検出できます。

'<INPUT value="Click Me"'といったHTMLのINPUTvalueの文字列のみを
属性名'value'によって検出できます。

*正規表現他のパラメータ (関数名、プリプロセッサー名、変数名、修飾子、タグ属性名)の関係は'AND'です。
例) 
正規表現 '[a-c]+' AND  
  (関数名 'printf' OR プリプロセッサー名 'include' OR  
   変数名 'foo' OR 修飾子 'static' OR 
   属性名 'name') のルールは、
  '"abc"', 'printf("a")', '#include "b"', 'char* foo="c"', 'static char* str="ac"', '<input name="ab"' 
  にマッチし、  
  '"de"', 'printf("Bye")', '#include "my.h"', 'char* foo="foo"', 'static char* str="App"', '<input name="go"' 
  にはマッチしません正規表現以外のパラメータを指定する多くの場合、正規表現には'.*'(任意の文字)を指定する必要があります。
*例外/特定文字列については、より便利な使い方を自身で探して出してみて下さい。

[このルールを有効にする]
チェックを外した場合、このルールは解析に無視(未使用に)されます。

== ルールの優先順位 ==

文字列が複数のルールにマッチした場合、以下の優先順位に従って適用されます。
1. 上位にリストされているライブラリは下位のものに優先する。
   (例: 'Common' > 'Std' > 'Win32' > 'MFC' > 'User1')

2. 正規表現のキーワードは'*(全データ)'に優先する。
   (例: '[a-c]+' > '*(全データ)')
    
3. ライブラリの優先順位(1.)はキーワードの優先順位(2.)に優先する。
   (例: 'Common'の'*(全データ)' > 'Std'の'[a-c]+')    
文字比較

[キーワード]
"*(全データ)"のみ。
キーワードを参照。
文字比較の場合、"*(全データ)"は全ての文字を表わします。

[ライブラリ]
ライブラリを参照。

[レベル]
レベルを参照。

[説明]
説明を参照。

[参考情報]
参考情報を参照。

[例外文字]
このオプションにマッチした文字はエラーから除外されます。
例外文字はJava正規表現によって指定できます。
詳細は、例外文字のダイアログを参照してください。

[このルールを有効にする]
チェックを外した場合、このルールは解析に無視(未使用に)されます。

必要キーワード

[キーワード]
必要な関数名、クラス名、値などを指定してください。(例:setlocale、Locale、DEFAULT)
キーワードを参照。

[ライブラリ]
ライブラリを参照。

[レベル]
レベルを参照。

[説明]
説明を参照。

[参考情報]
参考情報を参照。

[このキーワードを必要とする]
チェックした場合、このキーワードは不足キーワードビューに現われます。

[記述すべき場所]
このキーワードがあるべき場所(例: 関数名)を指定します。
これ以外の場所にキーワードが見つかった場合、キーワードは不足キーワードとして報告されます。

[以下のキーワードの前に記述]
各行にデータ型や関数名を指定してください。
このキーワードが他のデータ型や関数に影響を与える場合は、このオプションを使ってください。



















目次へ戻る


Copyright (C) 2012 Kokusaika JP, Inc.
本ドキュメントを無断で転載および引用することを禁じます。