Documentation
¶
Index ¶
- Constants
- Variables
- type CleanupMethod
- type ContextAnalyzer
- func (ca *ContextAnalyzer) AnalyzeContextUsage(file *ast.File, typeInfo *types.Info) error
- func (ca *ContextAnalyzer) FindMissingCancels(pass *analysis.Pass) []analysis.Diagnostic
- func (ca *ContextAnalyzer) GetTrackedContextVars() []ContextInfo
- func (ca *ContextAnalyzer) IsContextWithCancel(funcName string) bool
- func (ca *ContextAnalyzer) TrackContextCreation(call *ast.CallExpr, typeInfo *types.Info) error
- type ContextInfo
- func (c *ContextInfo) AddDeferInfo(deferInfo *DeferCancelInfo)
- func (c *ContextInfo) GetAllDeferInfos() []DeferCancelInfo
- func (c *ContextInfo) GetDeferInfo() *DeferCancelInfo
- func (c *ContextInfo) HasDeferInfo() bool
- func (c *ContextInfo) SetDeferInfo(deferInfo *DeferCancelInfo)
- func (c *ContextInfo) Validate() error
- type DeferAnalyzer
- func (da *DeferAnalyzer) AnalyzeDefers(fn *ast.FuncDecl, resources []ResourceInfo) []analysis.Diagnostic
- func (da *DeferAnalyzer) AnalyzeDefersPrecision(block *ast.BlockStmt) []DeferInfo
- func (da *DeferAnalyzer) FindBestMatchingDefer(resource ResourceInfo, defers []*ast.DeferStmt) *ast.DeferStmt
- func (da *DeferAnalyzer) FindDeferStatements(block *ast.BlockStmt) []*ast.DeferStmt
- func (da *DeferAnalyzer) HasMatchingVariableName(deferStmt *ast.DeferStmt, resource ResourceInfo) bool
- func (da *DeferAnalyzer) IsAddedToDeferArray(block *ast.BlockStmt, resource ResourceInfo) bool
- func (da *DeferAnalyzer) IsExpectedCleanupMethod(deferStmt *ast.DeferStmt, expectedMethod string) bool
- func (da *DeferAnalyzer) ValidateCleanupOrder(block *ast.BlockStmt) bool
- func (da *DeferAnalyzer) ValidateCleanupPattern(resource ResourceInfo, deferStmt *ast.DeferStmt) bool
- func (da *DeferAnalyzer) ValidateDeferScope(block *ast.BlockStmt) bool
- type DeferCancelInfo
- type DeferInfo
- type DiagnosticGenerator
- func (dg *DiagnosticGenerator) CreateSuggestedFix(variableName, method string, creationPos token.Pos) analysis.SuggestedFix
- func (dg *DiagnosticGenerator) GenerateLocationInfo(pos token.Pos) string
- func (dg *DiagnosticGenerator) ReportMissingContextCancel(contextInfo ContextInfo) analysis.Diagnostic
- func (dg *DiagnosticGenerator) ReportMissingDefer(resource ResourceInfo) analysis.Diagnostic
- func (dg *DiagnosticGenerator) ShouldIgnoreNolint(file *ast.File, pos token.Pos) bool
- type EscapeAnalyzer
- func (ea *EscapeAnalyzer) AnalyzeEscape(variable *types.Var, fn *ast.FuncDecl) EscapeInfo
- func (ea *EscapeAnalyzer) DetectSpannerAutoManagement(variable *types.Var, fn *ast.FuncDecl) *SpannerEscapeInfo
- func (ea *EscapeAnalyzer) HasSpannerEscapeInfo(variable *types.Var) bool
- func (ea *EscapeAnalyzer) IsFieldAssigned(variable *types.Var, fn *ast.FuncDecl) bool
- func (ea *EscapeAnalyzer) IsReturnedValue(variable *types.Var, fn *ast.FuncDecl) bool
- func (ea *EscapeAnalyzer) IsSpannerClosurePattern(variable *types.Var, fn *ast.FuncDecl) (bool, string)
- func (ea *EscapeAnalyzer) ShouldSkipResource(resource ResourceInfo, escape EscapeInfo) (bool, string)
- type EscapeInfo
- type ResourceInfo
- type ResourceTracker
- func (rt *ResourceTracker) ClearTrackedResources()
- func (rt *ResourceTracker) FilterAutoManagedResources(resources []*ResourceInfo) []*ResourceInfo
- func (rt *ResourceTracker) FindResourceCreation(pass *analysis.Pass) []ResourceInfo
- func (rt *ResourceTracker) GetPackageInfo(packagePath string) (bool, string)
- func (rt *ResourceTracker) GetTrackedResources() []ResourceInfo
- func (rt *ResourceTracker) IntegrateSpannerEscape(resourceInfo *ResourceInfo, escapeAnalyzer *EscapeAnalyzer, ...)
- func (rt *ResourceTracker) IsResourceType(typ types.Type) (bool, string)
- func (rt *ResourceTracker) IsResourceTypeByName(typeName string) (bool, string)
- func (rt *ResourceTracker) TrackCall(call *ast.CallExpr) error
- type ServiceRule
- type ServiceRuleEngine
- func (sre *ServiceRuleEngine) GetCleanupMethod(serviceType string) (string, bool)
- func (sre *ServiceRuleEngine) GetServiceRule(serviceName string) *ServiceRule
- func (sre *ServiceRuleEngine) IsCleanupRequired(serviceType string) bool
- func (sre *ServiceRuleEngine) LoadDefaultRules() error
- func (sre *ServiceRuleEngine) LoadPackageExceptions(configPath string) error
- func (sre *ServiceRuleEngine) LoadRules(configPath string) error
- func (sre *ServiceRuleEngine) ShouldExemptPackage(packagePath string) (bool, string)
- type SpannerEscapeInfo
Constants ¶
const ( ReadWriteTransactionType = "ReadWriteTransaction" ReadOnlyTransactionType = "ReadOnlyTransaction" )
Spannerトランザクション種別定数
Variables ¶
var Analyzer = &analysis.Analyzer{
Name: "gcpclosecheck",
Doc: "detect missing Close/Stop/Cancel calls for GCP resources",
Run: run,
}
Analyzer は GCP リソースの解放漏れを検出する静的解析ツール
Functions ¶
This section is empty.
Types ¶
type CleanupMethod ¶
type CleanupMethod struct {
Method string `yaml:"method"` // メソッド名
Required bool `yaml:"required"` // 必須かどうか
Description string `yaml:"description"` // 説明
}
CleanupMethod は解放メソッドの詳細情報を表す
type ContextAnalyzer ¶
type ContextAnalyzer struct {
// contains filtered or unexported fields
}
ContextAnalyzer はcontext.WithCancel/WithTimeout検出とキャンセレーション検証を行う
func NewContextAnalyzer ¶
func NewContextAnalyzer() *ContextAnalyzer
NewContextAnalyzer は新しいContextAnalyzerを作成する
func (*ContextAnalyzer) AnalyzeContextUsage ¶
AnalyzeContextUsage は改良されたcontext使用解析を実行する
func (*ContextAnalyzer) FindMissingCancels ¶
func (ca *ContextAnalyzer) FindMissingCancels(pass *analysis.Pass) []analysis.Diagnostic
FindMissingCancels はanalysis.Passを使用してキャンセル漏れを検出する
func (*ContextAnalyzer) GetTrackedContextVars ¶
func (ca *ContextAnalyzer) GetTrackedContextVars() []ContextInfo
GetTrackedContextVars は追跡中のcontext変数一覧を取得する(テスト用)
func (*ContextAnalyzer) IsContextWithCancel ¶
func (ca *ContextAnalyzer) IsContextWithCancel(funcName string) bool
IsContextWithCancel は関数名がキャンセル関数を返すcontext関数かどうかを判定する
func (*ContextAnalyzer) TrackContextCreation ¶
TrackContextCreation はcontext生成関数を解析してキャンセル関数を追跡する
type ContextInfo ¶
type ContextInfo struct {
Variable *types.Var // context 変数
CancelFunc *types.Var // cancel 関数
CreationPos token.Pos // 生成位置
IsDeferred bool // defer で呼ばれているかどうか
DeferInfos []DeferCancelInfo // defer情報のリスト(複数のdeferに対応)
}
ContextInfo は context.WithCancel/WithTimeout の追跡情報を表す
func NewContextInfo ¶
func NewContextInfo(variable, cancelFunc *types.Var, creationPos token.Pos, isDeferred bool) *ContextInfo
NewContextInfo は ContextInfo のコンストラクタ
func (*ContextInfo) AddDeferInfo ¶
func (c *ContextInfo) AddDeferInfo(deferInfo *DeferCancelInfo)
AddDeferInfo は新しいdefer情報を追加する(複数対応)
func (*ContextInfo) GetAllDeferInfos ¶
func (c *ContextInfo) GetAllDeferInfos() []DeferCancelInfo
GetAllDeferInfos は全てのdefer情報を取得する
func (*ContextInfo) GetDeferInfo ¶
func (c *ContextInfo) GetDeferInfo() *DeferCancelInfo
GetDeferInfo は最初のdefer情報を取得する(後方互換性のため)
func (*ContextInfo) HasDeferInfo ¶
func (c *ContextInfo) HasDeferInfo() bool
HasDeferInfo は defer情報が設定されているかどうかを判定する
func (*ContextInfo) SetDeferInfo ¶
func (c *ContextInfo) SetDeferInfo(deferInfo *DeferCancelInfo)
SetDeferInfo は単一のdefer情報を設定する(既存の情報を置き換え)
func (*ContextInfo) Validate ¶
func (c *ContextInfo) Validate() error
Validate は ContextInfo の妥当性を検証する
type DeferAnalyzer ¶
type DeferAnalyzer struct {
// contains filtered or unexported fields
}
DeferAnalyzer はdefer文を解析してリソースの適切な解放を検証する
func NewDeferAnalyzer ¶
func NewDeferAnalyzer(tracker *ResourceTracker) *DeferAnalyzer
NewDeferAnalyzer は新しいDeferAnalyzerを作成する
func (*DeferAnalyzer) AnalyzeDefers ¶
func (da *DeferAnalyzer) AnalyzeDefers(fn *ast.FuncDecl, resources []ResourceInfo) []analysis.Diagnostic
AnalyzeDefers は関数内のdefer文を解析して診断を生成する(外部からリソースリストを受け取る)
func (*DeferAnalyzer) AnalyzeDefersPrecision ¶
func (da *DeferAnalyzer) AnalyzeDefersPrecision(block *ast.BlockStmt) []DeferInfo
AnalyzeDefersPrecision は改良されたdefer文の精密解析を実行する
func (*DeferAnalyzer) FindBestMatchingDefer ¶
func (da *DeferAnalyzer) FindBestMatchingDefer(resource ResourceInfo, defers []*ast.DeferStmt) *ast.DeferStmt
FindBestMatchingDefer は位置に基づいてリソースに最適なdefer文を見つける
func (*DeferAnalyzer) FindDeferStatements ¶
func (da *DeferAnalyzer) FindDeferStatements(block *ast.BlockStmt) []*ast.DeferStmt
FindDeferStatements はブロック内のdefer文を再帰的に検索する
func (*DeferAnalyzer) HasMatchingVariableName ¶
func (da *DeferAnalyzer) HasMatchingVariableName(deferStmt *ast.DeferStmt, resource ResourceInfo) bool
HasMatchingVariableName はdefer文の変数名がリソースと一致するかチェック
func (*DeferAnalyzer) IsAddedToDeferArray ¶
func (da *DeferAnalyzer) IsAddedToDeferArray(block *ast.BlockStmt, resource ResourceInfo) bool
IsAddedToDeferArray はリソースがdefers配列に追加されているかチェック
func (*DeferAnalyzer) IsExpectedCleanupMethod ¶
func (da *DeferAnalyzer) IsExpectedCleanupMethod(deferStmt *ast.DeferStmt, expectedMethod string) bool
IsExpectedCleanupMethod はdefer文が期待されるクリーンアップメソッドかチェック
func (*DeferAnalyzer) ValidateCleanupOrder ¶
func (da *DeferAnalyzer) ValidateCleanupOrder(block *ast.BlockStmt) bool
ValidateCleanupOrder はdefer文の順序が適切かを検証する Goのdeferはスタック(LIFO)なので、依存関係の逆順で呼び出される
func (*DeferAnalyzer) ValidateCleanupPattern ¶
func (da *DeferAnalyzer) ValidateCleanupPattern(resource ResourceInfo, deferStmt *ast.DeferStmt) bool
ValidateCleanupPattern はリソースとdefer文が適切にマッチするかを検証する
func (*DeferAnalyzer) ValidateDeferScope ¶
func (da *DeferAnalyzer) ValidateDeferScope(block *ast.BlockStmt) bool
ValidateDeferScope はdefer文のスコープ妥当性を検証
type DeferCancelInfo ¶
type DeferCancelInfo struct {
CancelVarName string // cancel変数名
DeferPos token.Pos // defer文の位置
ScopeDepth int // スコープの深さ
IsValid bool // defer文が有効かどうか
}
DeferCancelInfo は defer cancel() 呼び出しの情報を表す
func NewDeferCancelInfo ¶
func NewDeferCancelInfo(cancelVarName string, deferPos token.Pos, scopeDepth int, isValid bool) *DeferCancelInfo
NewDeferCancelInfo は DeferCancelInfo のコンストラクタ
func (*DeferCancelInfo) Validate ¶
func (d *DeferCancelInfo) Validate() error
Validate は DeferCancelInfo の妥当性を検証する
type DeferInfo ¶
type DeferInfo struct {
DeferStmt *ast.DeferStmt
ResourceType string
Method string
ScopeDepth int // スコープの深さ
IsValid bool // defer文が有効かどうか
}
DeferInfo はdefer文に関する情報を保持する
type DiagnosticGenerator ¶
type DiagnosticGenerator struct {
// contains filtered or unexported fields
}
DiagnosticGenerator は診断レポートを生成する
func NewDiagnosticGenerator ¶
func NewDiagnosticGenerator(fset *token.FileSet) *DiagnosticGenerator
NewDiagnosticGenerator は新しいDiagnosticGeneratorを作成する
func (*DiagnosticGenerator) CreateSuggestedFix ¶
func (dg *DiagnosticGenerator) CreateSuggestedFix(variableName, method string, creationPos token.Pos) analysis.SuggestedFix
CreateSuggestedFix はdefer文追加の修正提案を作成する
func (*DiagnosticGenerator) GenerateLocationInfo ¶
func (dg *DiagnosticGenerator) GenerateLocationInfo(pos token.Pos) string
GenerateLocationInfo はファイル位置情報を含む詳細な診断情報を生成する
func (*DiagnosticGenerator) ReportMissingContextCancel ¶
func (dg *DiagnosticGenerator) ReportMissingContextCancel(contextInfo ContextInfo) analysis.Diagnostic
ReportMissingContextCancel はcontext.WithCancelのキャンセル関数が不足している診断を生成する
func (*DiagnosticGenerator) ReportMissingDefer ¶
func (dg *DiagnosticGenerator) ReportMissingDefer(resource ResourceInfo) analysis.Diagnostic
ReportMissingDefer はdefer文が不足しているリソースの診断を生成する
func (*DiagnosticGenerator) ShouldIgnoreNolint ¶
ShouldIgnoreNolint はnolintディレクティブをチェックし、診断を抑制すべきかどうかを判定する
type EscapeAnalyzer ¶
type EscapeAnalyzer struct {
// contains filtered or unexported fields
}
EscapeAnalyzer はリソースの逃げパス(戻り値、フィールド代入)を解析する
func NewEscapeAnalyzer ¶
func NewEscapeAnalyzer() *EscapeAnalyzer
NewEscapeAnalyzer は新しいEscapeAnalyzerを作成する
func (*EscapeAnalyzer) AnalyzeEscape ¶
func (ea *EscapeAnalyzer) AnalyzeEscape(variable *types.Var, fn *ast.FuncDecl) EscapeInfo
AnalyzeEscape は変数のエスケープパターンを解析する
func (*EscapeAnalyzer) DetectSpannerAutoManagement ¶
func (ea *EscapeAnalyzer) DetectSpannerAutoManagement(variable *types.Var, fn *ast.FuncDecl) *SpannerEscapeInfo
DetectSpannerAutoManagement は Spannerトランザクションの自動管理パターンを検出する
func (*EscapeAnalyzer) HasSpannerEscapeInfo ¶
func (ea *EscapeAnalyzer) HasSpannerEscapeInfo(variable *types.Var) bool
HasSpannerEscapeInfo はSpannerエスケープ情報がキャッシュされているかを確認する
func (*EscapeAnalyzer) IsFieldAssigned ¶
IsFieldAssigned は変数が構造体のフィールドに代入されるかどうかを判定する
func (*EscapeAnalyzer) IsReturnedValue ¶
IsReturnedValue は変数が関数の戻り値として返されるかどうかを判定する
func (*EscapeAnalyzer) IsSpannerClosurePattern ¶
func (ea *EscapeAnalyzer) IsSpannerClosurePattern(variable *types.Var, fn *ast.FuncDecl) (bool, string)
IsSpannerClosurePattern は変数がSpannerクロージャパターンで使用されているかを検出する
func (*EscapeAnalyzer) ShouldSkipResource ¶
func (ea *EscapeAnalyzer) ShouldSkipResource(resource ResourceInfo, escape EscapeInfo) (bool, string)
ShouldSkipResource はリソースをスキップすべきかどうかを判定する
type EscapeInfo ¶
type EscapeInfo struct {
IsReturned bool // 関数戻り値として返されるか
IsFieldAssigned bool // 構造体フィールドに代入されるか
EscapeReason string // 逃げる理由の説明
}
EscapeInfo は変数の逃げパス(return/field格納)情報を表す
func NewEscapeInfo ¶
func NewEscapeInfo(isReturned, isFieldAssigned bool, reason string) *EscapeInfo
NewEscapeInfo は EscapeInfo のコンストラクタ
func (*EscapeInfo) HasEscaped ¶
func (e *EscapeInfo) HasEscaped() bool
HasEscaped は変数が逃げているかどうかを判定する
type ResourceInfo ¶
type ResourceInfo struct {
Variable *types.Var // 変数の型情報
VariableName string // 変数名(文字列)
CreationPos token.Pos // 生成位置
ServiceType string // GCP サービスタイプ(spanner, storage, pubsub 等)
CreationFunction string // 生成関数名(NewClient, ReadOnlyTransaction 等)
CleanupMethod string // 解放メソッド名(Close, Stop, Cleanup)
IsRequired bool // 解放が必須かどうか
Scope *types.Scope // 変数のスコープ
SpannerEscape *SpannerEscapeInfo // Spannerエスケープ情報(Spannerリソースのみ)
}
ResourceInfo は GCP リソースの生成情報と解放要求を表す
func NewResourceInfo ¶
func NewResourceInfo(variable *types.Var, creationPos token.Pos, serviceType, creationFunction, cleanupMethod string, isRequired bool, scope *types.Scope) *ResourceInfo
NewResourceInfo は ResourceInfo のコンストラクタ
func (*ResourceInfo) GetSpannerEscape ¶
func (r *ResourceInfo) GetSpannerEscape() *SpannerEscapeInfo
GetSpannerEscape は SpannerEscapeInfo を取得する
func (*ResourceInfo) HasSpannerEscape ¶
func (r *ResourceInfo) HasSpannerEscape() bool
HasSpannerEscape は SpannerEscapeInfo が設定されているかどうかを判定する
func (*ResourceInfo) SetSpannerEscape ¶
func (r *ResourceInfo) SetSpannerEscape(escape *SpannerEscapeInfo)
SetSpannerEscape は SpannerEscapeInfo を設定する
func (*ResourceInfo) ShouldSkipSpannerCleanup ¶
func (r *ResourceInfo) ShouldSkipSpannerCleanup() bool
ShouldSkipSpannerCleanup は、Spannerリソースの解放処理をスキップすべきかどうかを判定する
func (*ResourceInfo) Validate ¶
func (r *ResourceInfo) Validate() error
Validate は ResourceInfo の妥当性を検証する
type ResourceTracker ¶
type ResourceTracker struct {
// contains filtered or unexported fields
}
ResourceTracker はGCPリソースの生成を追跡する
func NewResourceTracker ¶
func NewResourceTracker(typeInfo *types.Info, ruleEngine *ServiceRuleEngine) *ResourceTracker
NewResourceTracker は新しいResourceTrackerを作成する
func (*ResourceTracker) ClearTrackedResources ¶
func (rt *ResourceTracker) ClearTrackedResources()
ClearTrackedResources は追跡中のリソースをクリアする
func (*ResourceTracker) FilterAutoManagedResources ¶
func (rt *ResourceTracker) FilterAutoManagedResources(resources []*ResourceInfo) []*ResourceInfo
FilterAutoManagedResources は自動管理されるリソースをフィルタリングして除外する
func (*ResourceTracker) FindResourceCreation ¶
func (rt *ResourceTracker) FindResourceCreation(pass *analysis.Pass) []ResourceInfo
FindResourceCreation はanalysis.Passを使用してリソース生成を検出する
func (*ResourceTracker) GetPackageInfo ¶
func (rt *ResourceTracker) GetPackageInfo(packagePath string) (bool, string)
GetPackageInfo はパッケージパスからGCP情報を取得する
func (*ResourceTracker) GetTrackedResources ¶
func (rt *ResourceTracker) GetTrackedResources() []ResourceInfo
GetTrackedResources は追跡中のリソース一覧を取得する
func (*ResourceTracker) IntegrateSpannerEscape ¶
func (rt *ResourceTracker) IntegrateSpannerEscape(resourceInfo *ResourceInfo, escapeAnalyzer *EscapeAnalyzer, funcDecl *ast.FuncDecl)
IntegrateSpannerEscape はSpannerエスケープ解析結果をResourceInfoに統合する
func (*ResourceTracker) IsResourceType ¶
func (rt *ResourceTracker) IsResourceType(typ types.Type) (bool, string)
IsResourceType は型がGCPリソース型かどうかを判定する
func (*ResourceTracker) IsResourceTypeByName ¶
func (rt *ResourceTracker) IsResourceTypeByName(typeName string) (bool, string)
IsResourceTypeByName は型名からGCPリソース型かどうかを判定する
type ServiceRule ¶
type ServiceRule struct {
ServiceName string `yaml:"service_name"` // サービス名
PackagePath string `yaml:"package_path"` // パッケージパス
CreationFuncs []string `yaml:"creation_functions"` // 生成関数一覧
CleanupMethods []CleanupMethod `yaml:"cleanup_methods"` // 解放メソッド一覧
}
ServiceRule は GCP サービス固有の解放ルール定義を表す
func (*ServiceRule) GetRequiredCleanupMethods ¶
func (s *ServiceRule) GetRequiredCleanupMethods() []CleanupMethod
GetRequiredCleanupMethods は必須の解放メソッド一覧を返す
func (*ServiceRule) HasCreationFunc ¶
func (s *ServiceRule) HasCreationFunc(funcName string) bool
HasCreationFunc は指定された関数名が生成関数に含まれるかチェックする
type ServiceRuleEngine ¶
type ServiceRuleEngine struct {
// contains filtered or unexported fields
}
ServiceRuleEngine はGCPサービスルールの管理エンジン
func NewServiceRuleEngine ¶
func NewServiceRuleEngine() *ServiceRuleEngine
NewServiceRuleEngine は新しいServiceRuleEngineを作成する
func (*ServiceRuleEngine) GetCleanupMethod ¶
func (sre *ServiceRuleEngine) GetCleanupMethod(serviceType string) (string, bool)
GetCleanupMethod は指定されたサービスタイプの解放メソッドを取得する
func (*ServiceRuleEngine) GetServiceRule ¶
func (sre *ServiceRuleEngine) GetServiceRule(serviceName string) *ServiceRule
GetServiceRule はサービス名からServiceRuleを取得する
func (*ServiceRuleEngine) IsCleanupRequired ¶
func (sre *ServiceRuleEngine) IsCleanupRequired(serviceType string) bool
IsCleanupRequired は指定されたサービスタイプで解放が必須かを判定する
func (*ServiceRuleEngine) LoadDefaultRules ¶
func (sre *ServiceRuleEngine) LoadDefaultRules() error
LoadDefaultRules はデフォルト設定を読み込む
func (*ServiceRuleEngine) LoadPackageExceptions ¶
func (sre *ServiceRuleEngine) LoadPackageExceptions(configPath string) error
LoadPackageExceptions はパッケージ例外設定を読み込む 設定がない場合、またはパッケージ例外が定義されていない場合でもエラーにならない
func (*ServiceRuleEngine) LoadRules ¶
func (sre *ServiceRuleEngine) LoadRules(configPath string) error
LoadRules は設定ファイルからルールを読み込む configPathが空またはファイルが存在しない場合はデフォルト設定を使用
func (*ServiceRuleEngine) ShouldExemptPackage ¶
func (sre *ServiceRuleEngine) ShouldExemptPackage(packagePath string) (bool, string)
ShouldExemptPackage は指定されたパッケージパスが例外対象かを判定する
type SpannerEscapeInfo ¶
type SpannerEscapeInfo struct {
IsAutoManaged bool // フレームワークによる自動管理かどうか
TransactionType string // トランザクション種別(ReadWriteTransaction/ReadOnlyTransaction)
IsClosureManaged bool // クロージャ内で管理されているか
ClosureDetected bool // クロージャパターンが検出されたか
AutoManagementReason string // 自動管理の理由
}
SpannerEscapeInfo は Spannerリソースの自動管理情報を表す
func NewSpannerEscapeInfo ¶
func NewSpannerEscapeInfo(transactionType string, isAutoManaged bool, reason string) *SpannerEscapeInfo
NewSpannerEscapeInfo は SpannerEscapeInfo のコンストラクタ
func (*SpannerEscapeInfo) ShouldSkipCleanup ¶
func (s *SpannerEscapeInfo) ShouldSkipCleanup() bool
ShouldSkipCleanup は、このSpannerリソースの解放処理をスキップすべきかどうかを判定する
func (*SpannerEscapeInfo) Validate ¶
func (s *SpannerEscapeInfo) Validate() error
Validate は SpannerEscapeInfo の妥当性を検証する