いくつかのアノテーションがメッセージの抑制のために用意されています。 一般的には、永久に特定のエラーを抑制するために特定のフラグを使用することは通常、良いですが、 しかし、一般的なエラー抑制フラグは、後で修正されるか、あるいは、ドキュメント化されるであろう コードに対するメッセージを直に抑制するのに便利です。
ignore
end
i
i<n>
t
t<n>
下記の文法は、 構文コメントの文法を示すために、変更された[K&R,A13]からの C構文です。 Splintのアノテーションによってのみ効果が出ることを示します。 アノテーションでは、@ はコメントのマーカ文字を意味します。これは -commentchar によって設定されます(デフォルトは@です)。
direct-declarator ⇒
stateClause ⇒ /*@ ( uses | sets | defines | allocates | releases) reference,+ ;opt @*/
stateTag ⇒ only | shared | owned | dependent | observer | exposed | isnull | notnull
globals ⇒ /*@globals globitem,+ ;opt @*/ | /*@globalsdeclaration-listopt ;opt @*/
globitem ⇒ [ ( undef | killed )* ] identifier | internalState| fileSystem
modifies ⇒ /*@modifies (nothing | (expression | internalState | fileSystem)+ ;opt) @*/
イテレータは既にコメントであるため、 コメントによって囲まれない点を除き、 イテレータに対するグローバル句と修正句は関数に対するそれらと同様です。
direct-declarator
iter-globals ⇒ globals declaration-listopt ;opt
iter-modifies ⇒ modifies moditem,+;opt| modifies nothing;opt
external-declaration ⇒ /*@constant declaration ;opt @*/
代替型は引数と戻り値の型指定で使用することができます。
extended-type ⇒ type-specifier alt-type opt
alt-type ⇒ /*@alt basic-type,+ @*/
一般的なアノテーションは複数のstorage-class-specifierの後、かつ、 複数のtype-specifierの前に現れます。 複数のアノテーションは任意の順番で使用することが出来ます。 ここでは、アノテーションは周りのコメント無しです。 宣言内で、アノテーションは/*@と@*/によって 囲まれます。グローバルあるいは変更句あるいは、イテレータあるいは定数宣言内で、 コメント内にあるため、囲まれていないコメントが使用されます。
型定義はabstractあるいはconcreteの どちらか、mutableあるいはimmutableの どちらか、それから、refcountedが使用可能です。 structのポインタのみ、 refcountedで宣言することが出来ます。 具象型は実際の型から可変性を継承するため、 可変性アノテーションは具象型では使用できません。
abstract
concrete
immutable
mutable
refcounted
制御コメントは型のアクセス設定を上書きするために も使用できます。
/*@access <type>,+@*/
/*@noaccess <type>,+@*/
1つのチェックアノテーションがグローバルあるいはファイル静的変数の宣言上で使用可能です。
unchecked
checkmod
checked
checkedstrict
dependent
keep
killref
only
owned
shared
temp
両方の別名化アノテーションは引数の宣言で使用することが可能です。
unique
returned
observer
exposed
out
in
partial
reldef
これらのアノテーションはグローバルリストの中でのみ使用することが出来ます。 両方のアノテーションは、 変数が関数呼び出しの前後で未定義であることを意味するために、 同じ変数に対して使用できます。
undef
killed
null
notnull
relnull
null predicateアノテーションは、第一引数がnullの可能性のあるポインタであり、 Boolean型(真偽値型)を返す関数の戻り値に使用することが出来ます。
nullwhentrue
falsewhennull
noreturn、maynotreturnと alwaysreturnのアノテーションは どの関数に対しても使用することが出来ます。 noreturnwhentrueと noreturnwhenfalseの のアノテーションは第一引数の型がBoolean型(真偽値型)である関数に対してのみ使用可能です。
noreturn
maynotreturn
noreturnwhentrue
noreturnwhenfalse
alwaysreturn
sef
これらのアノテーションは未使用あるいは未定義エラーの報告を制御するために 宣言上で使用することが出来ます。
unused
external
fallthrough
これらのアノテーションは break文あるいは continue文 の前で使用することが出来ます。
innerbreak
loopbreak
switchbreak
innercontinue
このアノテーションは到達不能コードのエラーを抑制するために 文の前に使用することが出来ます。
notreached
これらのアノテーションは関数宣言の直前で使用されます。
printflike
scanflike
これらのアノテーションは関数、変数、あるいは型宣言の直前で使用されます。
warn <flag-specifier> <message>
/*@notfunction@*/
これらのアノテーションは任意の整数型を表すために使用されます。 文法的には、暗黙のint型で置き換えます。
/*@integraltype@*/
/*@unsignedintegraltype@*/
/*@signedintegraltype@*/
多くの標準UNIX lintによってサポートされている制御コメントの一部は、 レガシーシステムをより簡単にチェック可能とするため、Splintでサポート されています。 これらのコメントはSplintコメントと語彙的に矛盾なく、そして、 それらの意味はあまり正確ではなく(そして、異なるlintプログラム間で変化するかもしれない) 、そのため、我々は、Splintコメントが 標準lintコメントを既に含んでいるレガシーシステムのチェックを除いて、代わりに 使用されることをお勧めします。
これらの標準lintコメントはSplintによってサポートされています:
/*FALLTHROUGH*/ (別のつづり違いに、 /*FALLTHRU*/)
/*NOTREACHED*/
/*PRINTFLIKE*/
/*ARGSUSED*/
Splintは-lint-commentsが使用されている場合、 標準lintコメントを無視します。 +warn-lint-commentsが使用されている場合、 Splintは標準lintコメントに対しメッセージを生成し、代わりを提案します。
.mtsファイルの文法を以下に示します。
このドキュメントはSplint(英)のサイトを元に作成しました
[PageInfo]
LastUpdate: 2014-02-11 15:08:12, ModifiedBy: daruma_kyo
[License]
Creative Commons 2.1 Attribution-ShareAlike
[Permissions]
view:all, edit:login users, delete/config:members