Batch analysis client

Author(s): Isabel Garcia-Contreras.

Stability: [devel] Currently the subject of active development and/or research. Functionality may be limited and API and/or functionality may change without warning or deprecation period. Not recommended yet for use in production.

This module contains predicates for managing the batch analysis of sets of modules.

Note: this code is not performing multi-modular analysis. Some of its components can be generalized for other processes (compilation, program transformation) and be integrated into the build system, compiler, analyzer, etc.

Analysis options

  • no_incremental : By default, analysis is made only for modules in Paths which were not analyzed before. With this option, analysis will be runned from scratch.
  • timeout(T) : T is the time limit for the analysis of each module independently.
  • analysis(ListAbsInt) : ListAbsInt is a list of abstract domains available in ciaopp.
  • workers(N) : N is the number of threads use to perform the analysis of independent modules. Currently only 1 worker is supported.
? - use_module(ciaopp_batch(ciaopp_batch)).
? - analysis_start(['~/ciao-devel/core/lib/'], [timeout(40), analysis([eterms, gr])]).

Fast load through caching of assertions from libraries is available in ciaopp_worker.

To create and manually update this cache run command: update_lib_cache

Configuring ciaopp flags is not available yet.

Description of the implementation

Prolog files:

  • driver for the per-module CiaoPP analysis
  • performs control of ciaopp_workers, i.e., launchs them and kills them.
  • does the actual analysis.
  • file for auxiliary predicates.
  • collects statistics of the analyzed files (time and memory).

Other directories:

  • Attic/: placeholder for not used files that may be useful at some point

Data files

The status of the analysis is stored in the data/ directory:

  • data/ status of the modules (analyzed, errors, etc)
  • last analyzed predicate
  • analysis.log: date and time when each module started being analyzed

Usage and interface

  • Library usage:
    :- use_module(ciaopp_batch(ciaopp_batch)).
  • Exports:

Documentation on exports


Analyzes modules in some Paths and dumps their analysis information to disk, given some Opts.

  • The following properties should hold at call time:
    (list/1)Paths is a list.
    (list/1)Opts is a list.

Imported from db_analysis (see the corresponding documentation for details).

Imported from db_analysis (see the corresponding documentation for details).

Documentation on internals


Option of ciaopp batch (not ciaopp flags)

    Documentation on imports

    This module has the following direct dependencies: