JP2007219643A - Xsltコード解析プログラム、xsltコード解析方法、xsltコード解析装置及び記録媒体 - Google Patents

Xsltコード解析プログラム、xsltコード解析方法、xsltコード解析装置及び記録媒体 Download PDF

Info

Publication number
JP2007219643A
JP2007219643A JP2006036861A JP2006036861A JP2007219643A JP 2007219643 A JP2007219643 A JP 2007219643A JP 2006036861 A JP2006036861 A JP 2006036861A JP 2006036861 A JP2006036861 A JP 2006036861A JP 2007219643 A JP2007219643 A JP 2007219643A
Authority
JP
Japan
Prior art keywords
xslt
code
source code
condition determination
xslt code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006036861A
Other languages
English (en)
Inventor
Daisuke Kondo
大輔 近藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2006036861A priority Critical patent/JP2007219643A/ja
Publication of JP2007219643A publication Critical patent/JP2007219643A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】XSLTに適したソースコードの解析を実行することのできるXSLTコード解析プログラム、XSLTコード解析方法、XSLTコード解析装置及び記録媒体の提供を目的とする。
【解決手段】XSLTで記述されたソースコードの解析をコンピュータに実行させるためのXSLTコード解析プログラムであって、前記ソースコードに記述された条件判断の要素の数と、前記ソースコードに記述されたXPath内に指定された条件判断の記述の数とに基づいて当該ソースコードのサイクロマティック複雑度を算出することにより上記課題を解決する。
【選択図】図4

Description

本発明は、XSLTコード解析プログラム、XSLTコード解析方法、XSLTコード解析装置及び記録媒体に関し、特にXSLTで記述されたソースコードの解析を行うXSLTコード解析プログラム、XSLTコード解析方法、XSLTコード解析装置及び記録媒体に関する。
ソフトウェアメトリクスは、ソフトウェア開発を様々な視点から定量的に評価するものである。ソフトウェアメトリクスの一つの指標として、例えば、サイクロマティック複雑度が存在する。
サイクロマティック複雑度(STCYC)とは、プログラムに含まれる条件判断の分岐点及び合流点の数(n)、プログラムに含まれる基本ブロックの数(e)、並びにプログラムの数(p)に基づいて、以下の式で算出される指標である。
STCYS=e−n+2p
図1は、サイクロマティック複雑度を説明するための図である。図1には、一つのプログラムの構造が模式的に示されている。したがって、pの値は「1」となる。更に、図1において、○で示されるn1〜n8が、条件判断の分岐点又は合流点を示す。したがって、nの値は「8」となる。また、矢印(→)で示されるe1〜e10は、基本ブロックを示す。したがって、eの値は10となる。そうすると、図1に示されるプログラムのサイクロマティック複雑度(STCYC)は、以下のとおり「4」となる。
STCYC=10−8+2×1=4
なお、一般的に、サイクロマティック複雑度の値は、10以下が適正であるとされている。
ところで、近年において、ソフトウェアを記述するプログラム言語としてはC言語やJava(登録商標)言語が主として用いられているところ、サイクロマティック複雑度は、C言語やJava(登録商標)言語等、一般的なプログラム言語との親和性は高く、かかるプログラム言語によって記述されたソースコードのサイクロマティック複雑度を自動的に算出するためのソフトウェアツールも存在する。例えば、C言語であれば、if文、elseif文、又はcase文等が分岐点として扱われる。
他方において、近年のインターネット技術の発展に伴い、アプリケーションがWebページを介して提供されることが多くなっているが、その書式を定義するための言語としてXSLT(XML Stylesheet Language Transformations)が一般的に用いられている。近年では、Webページのデザインが複雑化しており、また、画面数も増加している。かかる事情に伴い、XSLTコードも増加し、また、複雑化している。したがって、XSLTコードについても、C言語やJava(登録商標)言語等、他の言語で記述されたソースコードと同様に、その内容が適切に検証されることが望ましい。
特開2002―268919号公報
しかしながら、XSLTは、純粋なプログラミング言語ではなく、Webページの書式を規定するスタイルシートを記述するための言語(スタイル言語)であるため、一般的なプログラム言語には存在しない特有の文法がある。したがって、一般的なプログラム言語を対象として考案された指標を単純に当てはめるだけでは、XSLTコードの妥当性の検証に対する判断基準として不十分であるという問題がある。
本発明は、上記の点に鑑みてなされたものであって、XSLTに適したソースコードの解析を実行することのできるXSLTコード解析プログラム、XSLTコード解析方法、XSLTコード解析装置及び記録媒体の提供を目的とする。
そこで上記課題を解決するため、本発明は、XSLTで記述されたソースコードの解析をコンピュータに実行させるためのXSLTコード解析プログラムであって、前記ソースコードに記述された条件判断の要素の数と、前記ソースコードに記述されたXPath内に指定された条件判断の記述の数とに基づいて当該ソースコードのサイクロマティック複雑度を算出することを特徴とする。
このようなXSLTコード解析プログラムでは、XSLTに適したソースコードの解析を実行することができる。
本発明によれば、XSLTに適したソースコードの解析を実行することのできるXSLTコード解析プログラム、XSLTコード解析方法、XSLTコード解析装置及び記録媒体を提供することができる。
以下、図面に基づいて本発明の実施の形態を説明する。図2は、本発明の実施の形態におけるXSLTコード解析装置のハードウェア構成例を示す図である。なお、本実施の形態において、XSLTコードとは、XSLT(XML Stylesheet Language Transformations)によって記述されたソースコードをいう。
図2のXSLTコード解析装置10は、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、演算処理装置104と、表示装置105と、入力装置106と等を有するように構成される。
XSLTコード解析装置10での処理を実現するプログラムは、CD―ROM等の記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。補助記憶装置102は、インストールされたプログラムを格納すると共に、プログラムの処理に必要な各種のデータを格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。演算処理装置104は、メモリ装置103に格納されたプログラムに従ってXSLTコード解析装置10に係る機能を実行する。表示装置105はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置106はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
なお、XSLTコード解析装置10をネットワークを介して操作する場合、表示装置105及び入力装置106は、必ずしもXSLTコード解析装置10に接続されている必要はない。
図3は、本発明の実施の形態におけるXSLTコード解析装置の機能構成例を示す図である。図3における各部は、XSLTコード解析装置10にインストールされたプログラムが演算処理装置104によって処理されることにより機能する。図3において、XSLTコード解析装置10は、XSLTメトリクス解析部11を有している。
XSLTメトリクス解析部11は、XSLTコードファイル12のソフトウェアメトリクスを解析する。本実施の形態では、XSLTコードファイル12のソフトウェアメトリクスの例として、サイクロマティック複雑度、関数コール数、及び最大ネスト数に関する解析が行われる。
サイクロマティック複雑度(STCYC)とは、一般的に、プログラムに含まれる条件判断の分岐点及び合流点の数(n)、プログラムに含まれる基本ブロックの数(e)、並びにプログラムの数(p)に基づいて、以下の式(1)で算出される指標であり、一般的に10以下が適正な値であるとされる。
STCYS=e−n+2p・・・(1)
関数コール数は、ソースコードにおける関数コールの数を示す指標である。
最大ネスト数とは、ソースコードにおける条件判断の入れ子構造の階層の最大値を示す指標である。C言語を例とすると、if文の中に更にif文がある場合、そのネスト数は「2」となる。
XSLTメトリクス解析部11は、サイクロマティック複雑度算出部111、関数コール数算出部112、及び最大ネスト数算出部113等を有する。
サイクロマティック複雑度算出部111は、XSLTコードファイル12のサイクロマティック複雑度を算出する。
関数コール数算出部112は、XSLTコードファイル12のテンプレートの呼び出し回数(以下「テンプレートコール数」という。)を関数コール数として算出する。すなわち、XSLTにおけるテンプレートは、C言語等における関数と類似した性質を有するため、関数コール数をテンプレートコール数によって代替させるというわけである。
最大ネスト数算出部113は、XSLTコードファイル12の最大ネスト数を算出する。サイクロマティック複雑度算出部111、関数コール数算出部112、及び最大ネスト数算出部113等による処理は、一つの入力(ユーザからの指示等)に基づいてシーケンシャルに行われてもよいし、並列的に行われてもよい。また、別個独立に行われてもよい。
以下、図3のXSLTコード解析装置10の処理手順について説明する。まず、サイクロマティック複雑度算出部111によるサイクロマティック複雑度の算出処理について説明する。図4は、サイクロマティック複雑度算出部によるXSLTコードのサイクロマティック複雑度の算出処理の処理手順を説明するためのフローチャートである。
まず、サイクロマティック複雑度(以下、単に「複雑度」という。)を格納するための変数(stcyc)を0に初期化する(S101)。続いて、XSLTコードファイル12のファイルの終端が検出されるまでS102a及びS102bに囲まれたループ処理を実行する。すなわち、XSLTコードファイル12内のコードを1行ずつ読み込み(S103)、読み込んだ行に「xsl:template」要素の開始タグが含まれている場合(S104でYes)、ステップS105以降の処理を実行する。「xsl:template」要素の開始タグの検出は、例えば、読み込んだ行に“<xsl:template”という文字列が含まれているか否かにより行えばよい。また、後述における、他の要素の検出についても文字列の比較に基づいて行えばよい。
ステップS105において、複雑度を算出するための変数p、n、及びeのそれぞれを「1」に初期化する。なお、これらの変数は、上記式(1)に対応する。続いて、「xsl:template」要素の終了タグが検出されるまで、S106a及びS106bのループ処理を行う。すなわち、XSLTコードファイル12内のコードを1行ずつ読み込み(S107)、各行についてステップS108,S110、及びS112の判定を行う。
ステップS108では、読み込んだ行(以下、「カレント行」という。)に、「xsl:if」要素の開始タグ又は「xsl:when」要素の開始タグが含まれているか否かを判定する。カレント行に当該開始タグが含まれている場合(S108でYes)、nの値に1を加算すると共にeの値に2加算する(S109)。「xsl:if」要素及び「xsl:when」要素は、C言語のif文やcase文に相当するような条件判断を行う要素だからである。したがって、「xsl:if」要素の開始タグは分岐点として扱われ、nに1が加算されるのである。また、分岐により二つの基本ブロックが発生するため、eに2が加算されるのである。
続いて、ステップS110では、カレント行に、「xsl:if」要素の終了タグ又は「xsl:when」要素の終了タグが含まれているか否かを判定する。カレント行に当該終了タグが含まれている場合(S110でYes)、nに1を加算すると共にeに1を加算する(S111)。これは、当該終了タグが、「xsl:if」要素又は「xsl:when」要素の開始タグによる分岐の合流点となるからである。したがって、nに1が加算されるのである。また、合流によって合流点の後に基本ブロックが一つ発生するため、eに1が加算されるのである。
続いて、ステップS112では、カレント行が、「select」属性を含むか否かを判定する。カレント行が、「select」属性を含む場合(S112でYes)、「select」属性の値に指定されているXPath内における[]で囲まれた文字列の数をカウントし(S113)、カウントされた値(以下「カウント数」という。)に基づいて、nの値及びeの値を更新する(S114,S115)。これは、XPathにおける[]において条件判断が行われるからである。ここで、XPathにおける[]は、それ自体で条件判断を完結しているため条件判断の分岐点及び合流点の双方を含むもの、すなわち、分岐点及び合流点の組として扱う。したがって、ステップS114において、nの値には、カウント数を2倍した値が加算される(一つの条件判断(分岐及び合流)によってnの値は2増加するからである)。また、ステップS115において、eの値には、カウント数を3倍した値が加算される(一つの条件判断(分岐及び合流)によってnの値は3増加するからである)。
処理対象とされていた「xsl:template」要素の終了タグが検出されると、ステップS117に進み、nに1を加算する。当該「xsl:template」要素の終了を一つの合流として扱うためである。続いて、変数p、n、eの値を式(1)に当てはめ、更に、これまでに算出されている複雑度を加算することにより、複雑度の値(stcyc)を更新する(S118)。
XSLTコードファイル12のファイルの終端が検出されると、図4の処理は終了する。
図4において説明した処理手順の妥当性を、具体的なXSLTコードに当てはめて説明する。
図5は、XSLTコードの第一の具体例を示す図である。図5におけるXSLTコード12aには、一つの「xsl:if」要素が含まれている。記述12a―1は、当該「xsl:if」要素の開始タグであり、記述12a―2は、当該「xsl:if」要素」要素の終了タグである。「xsl:if」要素を条件判断として扱うと、XSLTコード12aの構造は図6のように示される。
図6は、XSLTコードの第一の具体例の模式図である。
図6において、○で示されるn11〜n14は、条件判断の分岐点又は合流点を示す。したがって、nの値は「4」となる。また、矢印(→)で示されるe11〜e14は、基本ブロックを示す。したがって、eの値は「4」となる。なお、XSLTコード12aは、一つのプログラムのコードであるため、pの値は「1」である。そうすると、図6に基づけば、XSLTコード12aの複雑度は、
STCYC=4―4+2×1=2
となる。
一方、XSLTコード12aの複雑度を、図4のフローチャートに基づいて算出すると以下のようになる。
図7は、XSLTコードの第一の具体例を複雑度の算出処理を示すフローチャートに当てはめた例を示す図である。図7に示されるフローチャートは、図4より一部を抜粋したものであり、同一ステップには同一符号が付されている。
フローチャートによれば、ステップS109において、XSLTコード12aの記述12a−1に基づいて、nの値は2となり(n=1+1=2)、eの値は3となる(e=1+2=3)。また、ステップS111において、記述12a―2に基づいて、nの値は3となり(n=2+1=3)、eの値は4となる(e=3+1=4)。更に、ステップS117において、nの値は1が加算されて4となる。その結果、ステップS118において、複雑度の値(stcyc)は、
4−4+2×1+0=2
となり、模式図に基づいて算出した値と同じ値となる。
また、図8は、XSLTコードの第二の具体例を示す図である。図8におけるXSLTコード12bには、記述12b−1、記述12b−2、及び記述12b−3に示されるように三つの「xsl:when」要素が含まれている。各記述には、「xsl:when」要素の開始タグ及び終了タグが含まれている。「xsl:when」要素を条件判断として扱うと、XSLTコード12bの構造は図9のように示される。
図9は、XSLTコードの第二の具体例の模式図である。
図9において、○で示されるn21〜n28は、分岐点又は合流点を示す。したがって、nの値は「8」となる。また、矢印(→)で示されるe21〜e30は、基本ブロックを示す。したがって、eの値は「10」となる。なお、XSLTコード12bは、一つのプログラムのコードであるため、pの値は「1」である。そうすると、図9に基づけば、XSLTコード12bの複雑度は、
STCYC=10―8+2×1=4
となる。
一方、XSLTコード12bの複雑度を、図4のフローチャートに基づいて算出すると以下のようになる。
図10は、XSLTコードの第二の具体例を複雑度の算出処理を示すフローチャートに当てはめた例を示す図である。図10に示されるフローチャートは、図4より一部を抜粋したものであり、同一ステップには同一符号が付されている。
フローチャートによれば、ステップS109において、XSLTコード12bの記述12b−1における開始タグに基づいて、nの値は2となり(n=1+1=2)、eの値は3となる(e=1+2=3)。また、XSLTコード12bの記述12b−2における開始タグに基づいて、nの値は3となり(n=2+1=3)、eの値は5となる(e=3+2=5)。また、XSLTコード12bの記述12b−3における開始タグに基づいて、nの値は4となり(n=3+1=4)、eの値は7となる(e=5+2=7)。
また、ステップS111において、XSLTコード12bの記述12b−1における終了タグに基づいて、nの値は5となり(n=4+1=5)、eの値は8となる(e=7+1=8)。また、XSLTコード12bの記述12b−2における終了タグに基づいて、nの値は6となり(n=5+1=6)、eの値は9となる(e=8+1=9)。また、XSLTコード12bの記述12b−3における終了タグに基づいて、nの値は7となり(n=6+1=7)、eの値は10となる(e=9+1=10)。
更に、ステップS117において、nの値は1が加算されて8となる。その結果、ステップS118において、複雑度の値(stcyc)は、
10−8+2×1+0=4
となり、模式図に基づいて算出した値と同じ値となる。
また、図11は、XSLTコードの第三の具体例を示す図である。図11におけるXSLTコード12cには、記述12c−1に、[]に囲まれた文字列が二つ含まれている(記述12c−11、記述12c―12)。[]を条件判断として扱うと、XSLTコード12cの構造は図12のように示される。
図12は、XSLTコードの第三の具体例の模式図である。
図12において、○で示されるn31〜n36は、分岐点又は合流点を示す。したがって、nの値は「6」となる。また、矢印(→)で示されるe31〜e37は、基本ブロックを示す。したがって、eの値は「7」となる。なお、XSLTコード12cは、一つのプログラムのコードであるため、pの値は「1」である。そうすると、図12に基づけば、XSLTコード12cの複雑度は、
STCYC=7―6+2×1=3
となる。
一方、XSLTコード12cの複雑度を、図4のフローチャートに基づいて算出すると以下のようになる。
図13は、XSLTコードの第三の具体例を複雑度の算出処理を示すフローチャートに当てはめた例を示す図である。図13に示されるフローチャートは、図4より一部を抜粋したものであり、同一ステップには同一符号が付されている。
フローチャートによれば、XSLTコード12cの記述12c−1に基づいて、ステップS113において、カウント数は2となる。したがって、ステップS114においてnの値は5となり(n=1+2×2)、ステップS115においてeの値は7となる(e=1+3×2=7)。更に、ステップS117において、nの値は1が加算されて6となる。その結果、ステップS118において、複雑度の値(stcyc)は、
7−6+2×1+0=3
となり、模式図に基づいて算出した値と同じ値となる。
以上のように、本実施の形態におけるXSLTコード解析装置10は、図4のフローチャートに基づく処理を実行することにより、XPathにおける[]のようなXSLTに特有の文法を考慮してサイクロマティック複雑度をより適切に算出することができる。
次に、関数コール数算出部112による関数コール数の算出処理について説明する。図14は、関数コール数算出部によるXSLTコードの関数コール数の算出処理の処理手順を説明するためのフローチャートである。
XSLTコードファイル12のファイルの終端が検出されるまでS201a及びS201bに囲まれたループ処理を実行する。すなわち、XSLTコードファイル12内のコードを1行ずつ読み込み(S202)、読み込んだ行に「xsl:template」要素の開始タグが含まれている場合(S203でYes)、ステップS204以降の処理を実行する。
ステップS204において、関数コール数を0に初期化する。続いて、「xsl:template」要素の終了タグが検出されるまで、S205a及びS205bのループ処理を行う。すなわち、XSLTコードファイル12内のコードを1行ずつ読み込み(S206)、各行について、「xsl:calltemplates」要素の開始タグ又は「xsl:applytemplates」要素の開始タグ等、テンプレートを呼び出すための要素の開始タグが含まれているか否かを判定する(S207)。カレント行に当該開始タグが含まれている場合(S207)、関数コール数に1を加算する。
したがって、「xsl:calltemplates」要素又は「xsl:applytemplates」要素の数、すなわちテンプレートコール数が関数コール数としてカウントされる。
以上のように、本実施の形態におけるXSLTコード解析装置10は、図4のフローチャートに基づく処理を実行することにより、テンプレートコール数を関数コール数として算出することができる。
次に、最大ネスト数算出部113による最大ネスト数の算出処理について説明する。図15は、最大ネスト数算出部によるXSLTコードの最大ネスト数の算出処理の処理手順を説明するためのフローチャートである。
XSLTコードファイル12のファイルの終端が検出されるまでS301a及びS301bに囲まれたループ処理を実行する。すなわち、XSLTコードファイル12内のコードを1行ずつ読み込み(S302)、読み込んだ行に「xsl:template」要素の開始タグが含まれている場合(S303でYes)、ステップS304以降の処理を実行する。
ステップS304において、ネスト数と最大ネスト数の双方を0に初期化する。ネスト数は、最大ネスト数を求めるための一時的な変数として用いられるものである。続いて、「xsl:template」要素の終了タグが検出されるまで、S305a及びS305bのループ処理を行う。すなわち、XSLTコードファイル12内のコードを1行ずつ読み込み(S306)、各行についてステップS307,S311、及びS313の判定を行う。
ステップS307では、読み込んだ行(カレント行)に、「xsl:if」要素の開始タグ又は「xsl:when」要素の開始タグが含まれているか否かを判定する。カレント行に当該開始タグが含まれている場合(S307でYes)、ネスト数に1を加算する(S308)。当該要素の開始によって、条件判断の階層が1段階深くなるからである。続いて、ネスト数と最大ネスト数とを比較し(S309)、ネスト数の方が最大ネスト数より大きい場合(S309でYes)、最大ネスト数の値にネスト数の値を代入する(S310)。
続いて、ステップS311では、カレント行に、「xsl:if」要素の終了タグ又は「xsl:when」要素の終了タグが含まれているか否かを判定する。カレント行に当該終了タグが含まれている場合(S311でYes)、ネスト数から1を減算する(S312)。当該要素の終了によって、条件判断の階層が1段階浅くなるからである。
上記ステップS307からS312までの処理によって、「xsl:if」要素又は「xsl:when」要素の終了タグが検出されるまで連続して検出される当該要素の開始タグの数に基づいて最大ネスト数が算出される。
続いて、ステップS313では、カレント行が、「select」属性を含むか否かを判定する。カレント行が、「select」属性を含む場合(S313でYes)、「select」属性の値に指定されているXPath内における[]で囲まれた文字列の数をネスト数に加算する(S314)。上述したように、XPathにおける[]において条件判断が行われるため、[]の存在も条件判断の入れ子として扱うというわけである。続いて、ネスト数と最大ネスト数とを比較し(S315)、ネスト数の方が最大ネスト数より大きい場合(S315でYes)、最大ネスト数の値にネスト数の値を代入する(S316)。
上記ステップS313からS316によって、XPath内における[]の存在についても最大ネスト数の算出にあたって考慮されることになる。
XSLTコードファイル12のファイルの終端が検出されると、図15の処理は終了する。
以上のように、本実施の形態におけるXSLTコード解析装置10は、図15のフローチャートに基づく処理を実行することにより、XPath内における[]の存在等、XSLTコードに特有の文法を考慮して最大ネスト数を算出することができる。
以上、本発明の実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
サイクロマティック複雑度を説明するための図である。 本発明の実施の形態におけるXSLTコード解析装置のハードウェア構成例を示す図である。 本発明の実施の形態におけるXSLTコード解析装置の機能構成例を示す図である。 サイクロマティック複雑度算出部によるXSLTコードのサイクロマティック複雑度の算出処理の処理手順を説明するためのフローチャートである。 XSLTコードの第一の具体例を示す図である。 XSLTコードの第一の具体例の模式図である。 XSLTコードの第一の具体例を複雑度の算出処理を示すフローチャートに当てはめた例を示す図である。 XSLTコードの第二の具体例を示す図である。 XSLTコードの第二の具体例の模式図である。 XSLTコードの第二の具体例を複雑度の算出処理を示すフローチャートに当てはめた例を示す図である。 XSLTコードの第三の具体例を示す図である。 XSLTコードの第三の具体例の模式図である。 XSLTコードの第三の具体例を複雑度の算出処理を示すフローチャートに当てはめた例を示す図である。 関数コール数算出部によるXSLTコードの関数コール数の算出処理の処理手順を説明するためのフローチャートである。 最大ネスト数算出部によるXSLTコードの最大ネスト数の算出処理の処理手順を説明するためのフローチャートである。
符号の説明
10 XSLTコード解析装置
11 XSLTメトリクス解析部
12 XSLTコードファイル
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 演算処理装置
105 表示装置
106 入力装置
111 サイクロマティック複雑度算出部
112 関数コール数算出部
113 最大ネスト数算出部
B バス

Claims (8)

  1. XSLTで記述されたソースコードの解析をコンピュータに実行させるためのXSLTコード解析プログラムであって、
    前記ソースコードに記述された条件判断の要素の数と、前記ソースコードに記述されたXPath内に指定された条件判断の記述の数とに基づいて当該ソースコードのサイクロマティック複雑度を算出することを特徴とするXSLTコード解析プログラム。
  2. 前記条件判断の要素の開始タグを検出する第一の検出手順と、
    前記条件判断の要素の終了タグを検出する第二の検出手順とを有し、
    前記開始タグを当該条件判断の分岐点とし、前記終了タグを当該条件判断の合流点としてサイクロマティック複雑度を算出することを特徴とする請求項1記載のXSLTコード解析プログラム。
  3. 前記XPath内より所定の記号を検出する第三の検出手順を有し、
    前記所定の記号を前記XPath内に指定された条件判断の分岐点及び合流点の組としてサイクロマティック複雑度を算出することを特徴とする請求項1又は2記載のXSLTコード解析プログラム。
  4. XSLTのテンプレートを呼び出す要素の開始タグの数に基づいて、前記ソースコードの関数コール数を算出する関数コール数算出手順を有することを特徴とする請求項1乃至3いずれか一項記載のXSLTコード解析プログラム。
  5. 前記終了タグが検出されるまで連続して検出される前記開始タグの数と、前記XPath内に指定された条件判断の記述の数とに基づいて、当該ソースコードにおける条件判断の最大ネスト数を算出するネスト数算出手順を有することを特徴とする請求項1乃至4いずれか一項記載のXSLTコード解析プログラム。
  6. 請求項1乃至5いずれか一項記載のXSLTコード解析プログラムを記録したコンピュータ読み取り可能な記録媒体。
  7. XSLTで記述されたソースコードの解析を行うXSLTコード解析装置におけるXSLTコード解析方法であって、
    前記ソースコードに記述された条件判断の要素の数と、前記ソースコードに記述されたXPath内に指定された条件判断の記述の数とに基づいて当該ソースコードのサイクロマティック複雑度を算出することを特徴とするXSLTコード解析方法。
  8. XSLTで記述されたソースコードの解析を行うXSLTコード解析装置であって、
    前記ソースコードに記述された条件判断の要素の数と、前記ソースコードに記述されたXPath内に指定された条件判断の記述の数とに基づいて当該ソースコードのサイクロマティック複雑度を算出することを特徴とするXSLTコード解析装置。
JP2006036861A 2006-02-14 2006-02-14 Xsltコード解析プログラム、xsltコード解析方法、xsltコード解析装置及び記録媒体 Pending JP2007219643A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006036861A JP2007219643A (ja) 2006-02-14 2006-02-14 Xsltコード解析プログラム、xsltコード解析方法、xsltコード解析装置及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006036861A JP2007219643A (ja) 2006-02-14 2006-02-14 Xsltコード解析プログラム、xsltコード解析方法、xsltコード解析装置及び記録媒体

Publications (1)

Publication Number Publication Date
JP2007219643A true JP2007219643A (ja) 2007-08-30

Family

ID=38496907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006036861A Pending JP2007219643A (ja) 2006-02-14 2006-02-14 Xsltコード解析プログラム、xsltコード解析方法、xsltコード解析装置及び記録媒体

Country Status (1)

Country Link
JP (1) JP2007219643A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014032466A (ja) * 2012-08-01 2014-02-20 Ntt Comware Corp 複雑度算出装置、複雑度算出方法および複雑度算出プログラム
JP7467978B2 (ja) 2020-02-26 2024-04-16 オムロン株式会社 判定方法、情報提示方法、制御プログラム及び判定装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014032466A (ja) * 2012-08-01 2014-02-20 Ntt Comware Corp 複雑度算出装置、複雑度算出方法および複雑度算出プログラム
JP7467978B2 (ja) 2020-02-26 2024-04-16 オムロン株式会社 判定方法、情報提示方法、制御プログラム及び判定装置

Similar Documents

Publication Publication Date Title
US8819629B2 (en) Automatically generating documentation on application programming interfaces
US8839210B2 (en) Program performance analysis apparatus
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US20070050704A1 (en) XML compiler that will generate an application specific XML parser
US9250864B2 (en) Relationship management for data modeling in an integrated development environment
US20070113221A1 (en) XML compiler that generates an application specific XML parser at runtime and consumes multiple schemas
US20080250231A1 (en) Program code conversion apparatus, program code conversion method and recording medium
TW201246070A (en) Loop parallelization based on loop splitting or index array
US9449114B2 (en) Removing non-substantive content from a web page by removing its text-sparse nodes and removing high-frequency sentences of its text-dense nodes using sentence hash value frequency across a web page collection
JP2003044275A (ja) 変更危険度測定システム、変更危険度測定方法及び変更危険度測定プログラム
US7774700B2 (en) Partial evaluation of XML queries for program analysis
JP2007293548A (ja) 情報処理装置および情報処理方法
CN109359055B (zh) 一种数据测试的方法和设备
JP5440287B2 (ja) シンボリック実行支援プログラム、方法及び装置
JP2011145996A (ja) レビューワ評価装置、レビューワ評価方法、及びプログラム
JP2007219643A (ja) Xsltコード解析プログラム、xsltコード解析方法、xsltコード解析装置及び記録媒体
Nguyen et al. Varis: IDE support for embedded client code in PHP web applications
JP5369565B2 (ja) プログラムのエラー情報出力装置、エラー情報出力方法およびエラー情報出力プログラム
US8136094B2 (en) Relationship management for data modeling in an integrated development environment
JP5462819B2 (ja) 基本木獲得装置、構文解析装置、方法、及びプログラム
Carvalho et al. DMOSS: Open source software documentation assessment
CN102103575A (zh) 用于端序转换的方法和设备
JPWO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
US10108405B2 (en) Compiling apparatus and compiling method
JP6111150B2 (ja) ソースコード解析装置、ソースコード解析方法、及びプログラム