Module InferBase.DB

Database of analysis results

Filename

type filename

generic file name

include sig ... end
val compare_filename : filename ‑> filename ‑> int
val filename_from_string : string ‑> filename
val filename_to_string : filename ‑> string
val filename_add_suffix : filename ‑> string ‑> filename
val file_exists : filename ‑> bool
val file_modified_time : ?⁠symlink:bool ‑> filename ‑> float

Return the time when a file was last modified. The file must exist.

Results Directory

module Results_dir : sig ... end
val append_crc_cutoff : ?⁠key:string ‑> ?⁠crc_only:bool ‑> string ‑> string

Append a crc to the string, using string_crc_hex32. Cut the string if it exceeds the cutoff limit. Use an optional key to compute the crc. Return only the crc if crc_only is true.

val strip_crc : string ‑> string

Strip any crc attached to any string generated by string_append_crc_cutoff

val source_file_encoding : SourceFile.t ‑> string

string encoding of a source file (including path) as a single filename

Source Dirs

type source_dir

source directory: the directory inside the results dir corresponding to a source file

include sig ... end
val compare_source_dir : source_dir ‑> source_dir ‑> int
val source_dir_to_string : source_dir ‑> string

expose the source dir as a string

val source_dir_get_internal_file : source_dir ‑> string ‑> filename

get the path to an internal file with the given extention (.tenv, ...)

val source_dir_from_source_file : SourceFile.t ‑> source_dir

get the source directory corresponding to a source file

val read_file_with_lock : string ‑> string ‑> string option

Read a file using a lock to allow write attempts in parallel.

val update_file_with_lock : string ‑> string ‑> (string ‑> string) ‑> unit

Update the file contents with the update function provided. If the directory does not exist, it is created. If the file does not exist, it is created, and update is given the empty string. A lock is used to allow write attempts in parallel.

val is_source_file : string ‑> bool

Check if a path is a Java, C, C++ or Objectve C source file according to the file extention

val fold_paths_matching : dir:filename ‑> p:(filename ‑> bool) ‑> init:'a ‑> f:(filename ‑> 'a ‑> 'a) ‑> 'a

Fold over all file paths recursively under dir which match p.

val paths_matching : string ‑> (string ‑> bool) ‑> string list

Return all file paths recursively under the given directory which match the given predicate