Documentation
¶
Overview ¶
Package source は走査対象(ファイルツリー・git diff)の列挙を提供する。
Index ¶
- Constants
- func DecodeEscapedView(text string) (string, bool)
- func RepoRoot() string
- func ScanDiff(d *detect.Detector, cfg *config.Config, diffRange string) ([]detect.Finding, error)
- func ScanPaths(d *detect.Detector, cfg *config.Config, paths []string) ([]detect.Finding, []error, error)
- func ScanStaged(d *detect.Detector, cfg *config.Config) ([]detect.Finding, error)
- type AddedLine
- type ScanStats
Constants ¶
const MaxFileSize = 5 * 1024 * 1024
MaxFileSize を超えるファイルは走査しない。
Variables ¶
This section is empty.
Functions ¶
func DecodeEscapedView ¶
DecodeEscapedView は decodeEscapedViews(JSON \uXXXX エスケープ → HTML 数値文字参照 → URL パーセントエンコードの直列デコードチェーン)の薄い エクスポートラッパ。
用途: scan --stdin 経路(外部連携用、cmd/jp-pii-detect/main.go)から呼ぶ ためにエクスポートしている。フルスキャン(scanFiles)は同一パッケージ内 なので decodeEscapedViews を直接呼ぶが、cmd パッケージから package 外の 非公開関数は呼べない。stdin はまさに JSON をそのままパイプで流し込む 用途(json.dumps(ensure_ascii=True) の出力や CI/エージェント連携)や、 URL・HTML を経由したログの貼り付けが多く、これらのエスケープ表記に 隠れた氏名・住所等の PII を検出できる価値が高いため、フルスキャン専用 だったこの復号ビューを stdin 経路にも広げる。
位置セマンティクス: decodeJSONUnicodeEscapes の doc comment を参照 (decodeHTMLNumericEntities・decodePercentEncoding も同じ性質を持つ)。 ok == true の場合、呼び出し側は以後の走査・オフセット計算(例: detect.ScanContent と detect.ComputeOffsets)を必ず戻り値の text(復号後 テキスト)に対して行うこと。行番号は元テキストと一致するが、エスケープを 含む行の列・オフセットは復号後テキスト上の位置になり、元テキスト(stdin の生バイト列)上の位置とは対応しない。ok == false の場合は 1 箇所も 復号できなかったことを意味し、呼び出し側は元の text をそのまま使ってよい (decodeUTF16 と同じ「置き換え」方式で、変更なしを表す)。
復号を無効にする opt-out フラグは現時点では設けない(フルスキャン側にも 無く、両経路の対称性を保つため)。将来的に必要になれば、呼び出し側で フラグを追加し本関数の呼び出し自体を条件分岐でスキップさせる形で拡張 できる。
func RepoRoot ¶ added in v0.5.0
func RepoRoot() string
RepoRoot はリポジトリルートの絶対パスを返す(リポジトリ外なら空文字列)。 cmd/jp-pii-detect が baseline の fingerprint 用パス正規化(ルート相対化)に 使う公開ラッパ。
func ScanDiff ¶
ScanDiff は指定リビジョン範囲(例: origin/main...HEAD)の追加行を走査する(CI 用)。 CSV/TSV 列コンテキストの post-image ヘッダ・JSON/YAML オブジェクトスコープの post-image 全文は diffRange の右辺(post-image を指すリビジョン)から取得する。 diffRangePostRevision で解決できない場合(裸のリビジョンなど)は postImageRevOK=false となり、scanGitDiff はいずれの取得も試みず、列 コンテキストなし・オブジェクトスコープなしにフォールバックする。
func ScanPaths ¶
func ScanPaths(d *detect.Detector, cfg *config.Config, paths []string) ([]detect.Finding, []error, error)
ScanPaths は指定パス配下のテキストファイルを走査する。 allowlist.paths は検出結果に報告するパス(走査ルートを含むスラッシュ 区切りパス)に加え、リポジトリルートからの相対パスに対しても評価する。 サブディレクトリから実行しても、ルートの設定に書いたルート相対の 正規表現(^testdata/ 等)が機能する。
個々のファイルの読み取りエラー(権限拒否・走査中の削除等)は致命的として 扱わない。該当ファイルをスキップして戻り値の warnings に集約し、他ファイルの 収集済み findings は失わずに返す。err は listFiles 自体の失敗(走査対象の ルートが存在しない等)のみを表す。
func ScanStaged ¶
ScanStaged は git のステージ済み変更の追加行を走査する(pre-commit 用)。 CSV/TSV 列コンテキストの post-image ヘッダ・JSON/YAML オブジェクトスコープの post-image 全文は `git show :<path>`(インデックスの stage 0 = ステージ済み 内容)で取得するため、postImageRevSpec は空文字を渡す(fetchCSVHeader 参照。 "" + ":path" = ":path")。
Types ¶
type ScanStats ¶ added in v0.4.3
type ScanStats struct {
FilesDiscovered int
FilesScanned int
SkippedBinary int
SkippedTooLarge int
ExcludedPaths int
ExcludedDefaultDirs int
}
ScanStats はフルスキャンの完全性を利用者へ説明するための匿名集計。 パスや検出値は保持せず、走査・除外理由ごとの件数だけを返す。
func ScanPathsWithStats ¶ added in v0.4.3
func ScanPathsWithStats(d *detect.Detector, cfg *config.Config, paths []string) ([]detect.Finding, []error, ScanStats, error)
ScanPathsWithStats は ScanPaths と同じ走査を行い、走査完全性の匿名集計も返す。 既存 API の呼び出し元を壊さないため、ScanPaths はこの関数への薄い委譲として残す。
func (ScanStats) SkippedFiles ¶ added in v0.4.3
SkippedFiles は列挙後に内容判定で走査しなかったファイル数を返す。 allowlist と既定除外ディレクトリは配下を列挙しないため含めない。