All Projects → Frama-C → Frama C Snapshot

Frama-C / Frama C Snapshot

Release snapshots of the Frama-C platform for source code analysis

Programming Languages

c
50402 projects - #5 most used programming language
ocaml
1615 projects

Projects that are alternatives of or similar to Frama C Snapshot

Bap
Binary Analysis Platform
Stars: ✭ 1,385 (+973.64%)
Mutual labels:  static-analysis
Java Disassembler
The Java Disassembler
Stars: ✭ 114 (-11.63%)
Mutual labels:  static-analysis
Zpa
A parser and source code analyzer for PL/SQL and Oracle SQL.
Stars: ✭ 124 (-3.88%)
Mutual labels:  static-analysis
Gopherci
GopherCI was a project to help you maintain high-quality Go projects, by checking each GitHub Pull Request, for backward incompatible changes, and a suite of other third party static analysis tools.
Stars: ✭ 105 (-18.6%)
Mutual labels:  static-analysis
Haxe Checkstyle
Haxe Checkstyle
Stars: ✭ 110 (-14.73%)
Mutual labels:  static-analysis
Php Cs Fixer
A tool to automatically fix PHP Coding Standards issues
Stars: ✭ 10,709 (+8201.55%)
Mutual labels:  static-analysis
Panopticon
A libre cross-platform disassembler.
Stars: ✭ 1,376 (+966.67%)
Mutual labels:  static-analysis
Njsscan
njsscan is a semantic aware SAST tool that can find insecure code patterns in your Node.js applications.
Stars: ✭ 128 (-0.78%)
Mutual labels:  static-analysis
Abaplint
Standalone linter for ABAP
Stars: ✭ 111 (-13.95%)
Mutual labels:  static-analysis
Reading
A list of computer-science readings I recommend
Stars: ✭ 1,919 (+1387.6%)
Mutual labels:  static-analysis
Phpstan
PHP Static Analysis Tool - discover bugs in your code without running it!
Stars: ✭ 10,534 (+8065.89%)
Mutual labels:  static-analysis
Stingray
IDAPython plugin for finding function strings recursively
Stars: ✭ 110 (-14.73%)
Mutual labels:  static-analysis
Config Lint
Command line tool to validate configuration files
Stars: ✭ 118 (-8.53%)
Mutual labels:  static-analysis
Sast Scan
Fully open-source SAST scanner supporting a range of languages and frameworks. Integrates with major CI pipelines and IDE such as Azure DevOps, Google CloudBuild, VS Code and Visual Studio. No server required!
Stars: ✭ 104 (-19.38%)
Mutual labels:  static-analysis
Malwarelab vm Setup
Setup scripts for my Malware Analysis VMs
Stars: ✭ 126 (-2.33%)
Mutual labels:  static-analysis
Crab
CoRnucopia of ABstractions: a library for building abstract interpretation-based analyses
Stars: ✭ 102 (-20.93%)
Mutual labels:  static-analysis
Setup Php
GitHub action to set up PHP with extensions, php.ini configuration, coverage drivers, and various tools.
Stars: ✭ 1,945 (+1407.75%)
Mutual labels:  static-analysis
Ruby Type Inference
Dynamic definitions and types provider for ruby static analysis
Stars: ✭ 129 (+0%)
Mutual labels:  static-analysis
Find Sec Bugs
The SpotBugs plugin for security audits of Java web applications and Android applications. (Also work with Kotlin, Groovy and Scala projects)
Stars: ✭ 1,748 (+1255.04%)
Mutual labels:  static-analysis
Argus Saf
Argus static analysis framework
Stars: ✭ 117 (-9.3%)
Mutual labels:  static-analysis

Frama-C

Frama-C is a platform dedicated to the analysis of source code written in C.

Note: The Official Frama-C Repository is now at our Gitlab!

Frama-C has moved its official repository to our self-hosted Gitlab instance.

Official releases (starting from Frama-C 21) will no longer be updated here.

Nightly snapshots are also available in our Gitlab! You can now get access to the latest development version at: https://git.frama-c.com/pub/frama-c/-/tree/master

The official Frama-C issue tracker is now at our Gitlab: https://git.frama-c.com/pub/frama-c/-/issues

You can submit issues and pull requests using your Github login (choose "Sign in with Github" when prompted).

See you there!

A Collaborative Platform

Frama-C gathers several analysis techniques in a single collaborative platform, consisting of a kernel providing a core set of features (e.g., a normalized AST for C programs) plus a set of analyzers, called plug-ins. Plug-ins can build upon results computed by other plug-ins in the platform.

Thanks to this approach, Frama-C provides sophisticated tools, including:

  • an analyzer based on abstract interpretation, aimed at verifying the absence of run-time errors (Eva);
  • a program proof framework based on weakest precondition calculus (WP);
  • a program slicer (Slicing);
  • a tool for verification of temporal (LTL) properties (Aoraï);
  • a runtime verification tool (E-ACSL);
  • several tools for code base exploration and dependency analysis (From, Impact, Metrics, Occurrence, Scope, etc.).

These plug-ins share a common language and can exchange information via ACSL (ANSI/ISO C Specification Language) properties. Plug-ins can also collaborate via their APIs.

Installation

For more detailed information about installing OPAM/Frama-C, see INSTALL.md.

Frama-C is available through OPAM, the OCaml Package Manager. This is the preferred installation method. Be sure to install opam v2.0 or higher. Then the following sequence of commands should install frama-c and its gui:

opam init
opam install depext
opam depext frama-c
opam install frama-c

Frama-C is developed mainly in Linux, often tested in macOS (via Homebrew), and occasionally tested on Windows (via the Windows Subsystem for Linux).

Usage

Frama-C can be run from the command-line, or via its graphical interface.

Simple usage

The recommended usage for simple files is one of the following lines:

frama-c file.c -<plugin> [options]
frama-c-gui file.c

Where -<plugin> is one of the several Frama-C plug-ins, e.g. -eva, or -wp, or -metrics, etc. Plug-ins can also be run directly from the GUI.

To list all plug-ins, run:

frama-c -plugins

Each plug-in has a help command (-<plugin>-help or -<plugin>-h) that describes its several options.

Finally, the list of options governing the behavior of Frama-C's kernel itself is available through

frama-c -kernel-help

Complex scenarios

For more complex usage scenarios (lots of files and directories, with several preprocessing directives), we recommend splitting Frama-C's usage in two parts:

  1. Parsing the input files and saving the result to a file;
  2. Loading the parsing results and then running the analyses or the GUI.

Parsing typically involves giving extra arguments to the C preprocessor, so the -cpp-extra-args option is often useful, as in the example below:

frama-c *.c *.h -cpp-extra-args="-D<define> -I<include>" -save parsed.sav

The results are then loaded into Frama-C for further analyses or for inspection via the GUI:

frama-c -load parsed.sav -<plugin> [options]
frama-c-gui -load parsed.sav -<plugin> [options]

Further reference

  • Links to user and developer manuals, Frama-C archives, and plug-in manuals are available at
    http://frama-c.com/download.html

  • StackOverflow has several questions with the frama-c tag, which is monitored by several members of the Frama-C community.

  • The Frama-c-discuss mailing list is used for announcements and general discussions.

  • The official bug tracking system can be used for bug reports.

  • The Frama-C wiki has some useful information, although it is not entirely up-to-date.

  • The Frama-C blog has several posts about new developments of Frama-C, as well as general discussions about the C language, undefined behavior, floating-point computations, etc.

  • The Github snapshot repository contains the .tar.gz archives of stable Frama-C releases, ready to be cloned. It can also be used for reporting issues and submitting pull requests.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].