All Projects → facebook → Pyre Check

facebook / Pyre Check

Licence: mit
Performant type-checking for python.

Programming Languages

python
139335 projects - #7 most used programming language
ocaml
1615 projects
c
50402 projects - #5 most used programming language
Standard ML
205 projects
typescript
32286 projects
shell
77523 projects

Projects that are alternatives of or similar to Pyre Check

progge.rs
Program analysis playground for a simple, imperative language
Stars: ✭ 29 (-99.49%)
Mutual labels:  static-analysis, program-analysis, abstract-interpretation
Pyt
A Static Analysis Tool for Detecting Security Vulnerabilities in Python Web Applications
Stars: ✭ 2,061 (-63.94%)
Mutual labels:  static-analysis, program-analysis, taint-analysis
clam
Static Analyzer for LLVM bitcode based on Abstract Interpretation
Stars: ✭ 180 (-96.85%)
Mutual labels:  static-analysis, program-analysis, abstract-interpretation
Linter
Static Analysis Compiler Plugin for Scala
Stars: ✭ 273 (-95.22%)
Mutual labels:  static-analysis, program-analysis
codeclimate-duplication
Code Climate engine for code duplication analysis
Stars: ✭ 96 (-98.32%)
Mutual labels:  static-analysis, code-quality
Seahorn
SeaHorn Verification Framework
Stars: ✭ 270 (-95.28%)
Mutual labels:  static-analysis, program-analysis
analysis-net
Static analysis framework for .NET programs.
Stars: ✭ 19 (-99.67%)
Mutual labels:  static-analysis, control-flow-analysis
Phasar
A LLVM-based static analysis framework.
Stars: ✭ 503 (-91.2%)
Mutual labels:  static-analysis, program-analysis
Sonar Php
🐘 SonarPHP: PHP static analyzer for SonarQube & SonarLint
Stars: ✭ 288 (-94.96%)
Mutual labels:  static-analysis, code-quality
Pep8speaks
A GitHub app to automatically review Python code style over Pull Requests
Stars: ✭ 546 (-90.45%)
Mutual labels:  static-analysis, code-quality
Pmd
An extensible multilanguage static code analyzer.
Stars: ✭ 3,667 (-35.85%)
Mutual labels:  static-analysis, code-quality
Pylint
It's not just a linter that annoys you!
Stars: ✭ 3,733 (-34.69%)
Mutual labels:  static-analysis, code-quality
Detekt
Static code analysis for Kotlin
Stars: ✭ 4,169 (-27.06%)
Mutual labels:  static-analysis, code-quality
monadic-cfa
Generic implementation of different CFA families based on monadic decomposition
Stars: ✭ 16 (-99.72%)
Mutual labels:  static-analysis, abstract-interpretation
Wotan
Pluggable TypeScript and JavaScript linter
Stars: ✭ 271 (-95.26%)
Mutual labels:  static-analysis, code-quality
qodana-action
⚙️ Scan your Java, Kotlin, PHP, Python, JavaScript, TypeScript projects at GitHub with Qodana
Stars: ✭ 112 (-98.04%)
Mutual labels:  static-analysis, code-quality
Reviewdog
🐶 Automated code review tool integrated with any code analysis tools regardless of programming language
Stars: ✭ 4,541 (-20.56%)
Mutual labels:  static-analysis, code-quality
Psalm
A static analysis tool for finding errors in PHP applications
Stars: ✭ 4,523 (-20.87%)
Mutual labels:  static-analysis, taint-analysis
static-code-analysis-plugin
A plugin to simplify Static Code Analysis on Gradle. Not restricted to, but specially useful, in Android projects, by making sure all analysis can access the SDK classes.
Stars: ✭ 36 (-99.37%)
Mutual labels:  static-analysis, code-quality
instrumentation
Assorted pintools
Stars: ✭ 24 (-99.58%)
Mutual labels:  program-analysis, taint-analysis

lint tests pyre License: MIT

Pyre is a performant type checker for Python compliant with PEP 484. Pyre can analyze codebases with millions of lines of code incrementally – providing instantaneous feedback to developers as they write code.

Pyre ships with Pysa, a security focused static analysis tool we've built on top of Pyre that reasons about data flows in Python applications. Please refer to our documentation to get started with our security analysis.

Requirements

To get started, you need Python 3.6 or later and watchman working on your system. On MacOS you can get everything with homebrew:

$ brew install python3 watchman

On Ubuntu, Mint, or Debian; use apt-get and homebrew:

$ sudo apt-get install python3 python3-pip python3-venv
$ brew install watchman

We tested Pyre on Ubuntu 18.04.5 LTS, CentOS 7, as well as OSX 10.11 and later.

Setting up a Project

We start by creating an empty project directory and setting up a virtual environment:

$ mkdir my_project && cd my_project
$ python3 -m venv ~/.venvs/venv
$ source ~/.venvs/venv/bin/activate
(venv) $ pip install pyre-check

Next, we teach Pyre about our new project:

(venv) $ pyre init

This command will set up a configuration for Pyre (.pyre_configuration) as well as watchman (.watchmanconfig) in your project's directory. Accept the defaults for now – you can change them later if necessary.

Running Pyre

We are now ready to run Pyre:

(venv) $ echo "i: int = 'string'" > test.py
(venv) $ pyre
 ƛ Found 1 type error!
test.py:1:0 Incompatible variable type [9]: i is declared to have type `int` but is used as type `str`.

This first invocation will start a daemon listening for filesystem changes – type checking your project incrementally as you make edits to the code. You will notice that subsequent invocations of pyre will be faster than the first one.

For more detailed documentation, see https://pyre-check.org.

Join the Pyre community

See CONTRIBUTING.md for how to help out.

License

Pyre is licensed under the MIT license.

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].