プロシージャー間の解析

スタティックの検証は、次のようなプログラムユニット間のオブジェクト宣言の不一致を検出します。

次に、プロシージャー間の解析例を示します。

例 1: データ型の誤り

config1.c ファイルには、次のコードが含まれています。

31    int extraSpace , pad , height , width , rows , bot , top , trow ;

dimbox.c ファイルには、次のコードが含まれています。

13    char **rows ;

スタティックの検証機能で次のメッセージが発行されます。

dimbox.c(13): error #12090: [SV] inconsistent declaration of variable "rows" (wrong type).See (file:config1.c line:31)

例 2: 引数の数の誤り

controlf.c ファイルには、次の関数宣言が含まれています。

controlf()

uloop2.c ファイルには、次のコードが含まれています。

65     fds = controlf( 1 ) ;

スタティックの検証機能で次のメッセージが発行されます。

uloop2.c(65): error #12020: [SV] number of actual arguments (1) in call of "controlf" doesn't match the number of formal arguments (0); "controlf" is defined at (file:controlf.c line:4)

3: プロシージャー引数のデータ型の誤り

lapak.f90 ファイルには、次のコードが含まれています。

8759     SUBROUTINE ZGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO )

                    ...

8771     INTEGER            IPIV( * )

bifgel.f90 ファイルには、次のコードが含まれています。

778     Subroutine CMAN2(W, N, NW, Omega, H20, H11, W20, W11, WK, ier)

779     Implicit Real*8 (A-H,O-Z)

                ...

782     Dimension W(*), H11(N), W11(N), WK(N)               ...

840     Call Zgetrs ('N', N, 1, W(Lac), N, WK, W20, N, info)

スタティックの検証機能で次のメッセージが発行されます。

bifgel.f90(840): error #12040: [SV] actual argument 6 in call of "ZGETRS" doesn't conform to formal argument.See (file: lapak.f90 line:8759)