Skip to content

Commit 9985bae

Browse files
RISHIKA-A-SRISHIKA-2005-12ParzivalHack
authored
Improve README structure, formatting, and installation clarity. #14 (#26)
## Summary This PR improves the PySpector README by fixing markdown rendering issues, clarifying installation steps (especially for Windows), improving navigation with a table of contents, and enhancing overall readability. ## Changes Made - Fixed broken markdown and code block formatting - Improved Python version and installation clarity - Cleaned up Windows PowerShell setup instructions - Added navigation structure and minor wording improvements ## Notes No functional or behavioral changes were made. Documentation-only improvements. Closes #14 --------- Co-authored-by: RISHIKA-A-S <sjit.rishika@gmail.com> Co-authored-by: Tommaso Bona <piergeolo@gmail.com>
1 parent 21d7d64 commit 9985bae

1 file changed

Lines changed: 33 additions & 14 deletions

File tree

README.md

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,61 @@
55
# High-Performance Python and Rust SAST Framework
66

77
[![POWERED BY](https://img.shields.io/badge/POWERED%20BY-SecurityCert-purple)](https://www.securitycert.it/)
8-
[![Total PyPI Downloads](https://static.pepy.tech/badge/your-package-name)](https://pepy.tech/project/pyspector)
8+
[![Total PyPI Downloads](https://static.pepy.tech/badge/pyspector)](https://pepy.tech/project/pyspector)
99
[![PyPI Downloads](https://static.pepy.tech/personalized-badge/pyspector?period=weekly&units=INTERNATIONAL_SYSTEM&left_color=GRAY&right_color=BLUE&left_text=downloads%2Fweek)](https://pepy.tech/projects/pyspector)
1010
[![latest release](https://img.shields.io/badge/latest%20release-v0.1.4--beta-blue)](https://github.com/ParzivalHack/PySpector/releases/tag/v0.1.4-beta-hotfix)
1111
[![PyPI version](https://img.shields.io/pypi/v/pyspector?color=blue&label=pypi%20package)](https://pypi.org/project/pyspector/)
1212
[![Python version](https://img.shields.io/badge/Python-3.9%2B-blue?logo=python&logoColor=white)](https://www.python.org/)
1313
[![Rust version](https://img.shields.io/badge/Rust-stable-orange?logo=rust&logoColor=white)](https://www.rust-lang.org/)
1414

1515

16-
PySpector is a static analysis security testing (SAST) Framework engineered for modern Python development workflows. It leverages a powerful Rust core to deliver high-speed, accurate vulnerability scanning, wrapped in a developer-friendly Python CLI. By compiling the analysis engine to a native binary, PySpector avoids the performance overhead of traditional Python-based tools, making it an ideal choice for integration into CI/CD pipelines and local development environments where speed is critical.
16+
PySpector is a Static Application Security Testing (SAST) framework for modern Python projects.
17+
It combines a high-performance Rust analysis engine with a developer-friendly Python CLI to deliver fast and accurate vulnerability scanning.
18+
19+
By compiling the core analysis engine to a native binary, PySpector avoids the performance limitations of traditional Python-only tools. This makes it well-suited for CI/CD pipelines and local development environments where speed and scalability matter.
1720

1821
The tool is designed to be both comprehensive and intuitive, offering a multi-layered analysis approach that goes beyond simple pattern matching to understand the structure and data flow of your application.
1922

23+
## Table of Contents
24+
- [Getting Started](#getting-started)
25+
- [Key Features](#key-features)
26+
- [How It Works](#how-it-works)
27+
- [Performance Benchmarks](#performance-benchmarks)
28+
- [Usage](#usage)
29+
- [Plugin System](#plugin-system-new-feature)
30+
- [Triaging and Baselining](#triaging-and-baselining-findings)
31+
- [Automation and Integration](#automation-and-integration)
2032

2133

2234
## Getting Started
2335

2436
### Prerequisites
2537

26-
- **Python**: Version 3.12 or lower (Python 3.9+ required).
27-
- **Rust**: The Rust compiler (`rustc`) and Cargo package manager are required. You can easily install the **Rust toolchain** via [rustup](https://rustup.rs/) and verify your installation by running `cargo --version`.
38+
- **Python**: Python 3.9 – 3.12 supported (Python 3.9 or newer, up to 3.12).
39+
- **Rust**: The Rust compiler (`rustc`) and Cargo package manager are required. You can easily install the **Rust toolchain** via [rustup](https://rustup.rs/) and verify your installation by running `cargo --version`.
2840

2941
### Installation
3042

31-
1. **Create a Virtual Environment**: It is highly recommended to install PySpector in a dedicated Python3.12 venv.
43+
It is **highly recommended** to install PySpector in a dedicated Python 3.12 venv.
44+
45+
#### Create a Virtual Environment:
46+
47+
- **Linux (Bash)**:
3248
```bash
3349
python3.12 -m venv venv
3450
source venv/bin/activate
3551
```
36-
* In Windows, just download Python 3.12 from the Microsoft Store and run:
37-
```powershell
52+
53+
- **Windows (PowerShell)**:
54+
```powershell
55+
# Download Python 3.12 from the Microsoft Store and run:
3856
python3.12 -m venv venv
3957
.\venv\Scripts\Activate.ps1
40-
# or, depending on the Python3.12 installation source: .\venv\bin\Activate.ps1
41-
```
42-
43-
With PySpector now officially on PyPI(🎉), installation is as simple as running:
58+
# or, depending on the Python 3.12 installation source:
59+
.\venv\bin\Activate.ps1
60+
```
4461

62+
With PySpector now officially on PyPI🎉, installation is as simple as running:
4563
```bash
4664
pip install pyspector
4765
```
@@ -50,11 +68,11 @@ pip install pyspector
5068

5169
* **Multi-Layered Analysis Engine:** PySpector employs a sophisticated, multi-layered approach to detect a broad spectrum of vulnerabilities:
5270

53-
* * **Regex-Based Pattern Matching:** Scans all files for specific patterns, ideal for identifying hardcoded secrets, insecure configurations in Dockerfiles, and weak settings in framework files.
71+
- **Regex-Based Pattern Matching:** Scans all files for specific patterns, ideal for identifying hardcoded secrets, insecure configurations in Dockerfiles, and weak settings in framework files.
5472

55-
* * **Abstract Syntax Tree (AST) Analysis:** For Python files, the tool parses the code into an AST to analyze its structure. This enables precise detection of vulnerabilities tied to code constructs, such as the use of eval(), insecure deserialization with pickle, or weak hashing algorithms.
73+
- **Abstract Syntax Tree (AST) Analysis:** For Python files, the tool parses the code into an AST to analyze its structure. This enables precise detection of vulnerabilities tied to code constructs, such as the use of eval(), insecure deserialization with pickle, or weak hashing algorithms.
5674

57-
* * **Inter-procedural Taint Analysis:** The engine builds a comprehensive call graph of the entire application to perform taint analysis. It tracks the flow of data from input sources (like web requests) to dangerous sinks (like command execution functions), allowing it to identify complex injection vulnerabilities with high accuracy.
75+
- **Inter-procedural Taint Analysis:** The engine builds a comprehensive call graph of the entire application to perform taint analysis. It tracks the flow of data from input sources (like web requests) to dangerous sinks (like command execution functions), allowing it to identify complex injection vulnerabilities with high accuracy.
5876

5977
* **Comprehensive and Customizable Ruleset:** PySpector comes with 241 built-in rules that cover common vulnerabilities, including those from the OWASP Top 10. The rules are defined in a simple TOML format, making them easy to understand and extend.
6078

@@ -160,6 +178,7 @@ pyspector scan /path/to/your/project --ai
160178
```
161179

162180
## Plugin System (NEW FEATURE🚀)
181+
163182
<img width="1298" height="538" alt="image" src="https://github.com/user-attachments/assets/f2ad2a5e-c8e3-4723-a729-f318fef07e24" />
164183
PySpector ships with an extensible plugin architecture that lets you post-process findings, generate custom artefacts, or orchestrate follow-up actions after every scan. Plugins run in-process once the Rust core returns the final issue list, so they see exactly the same normalized data that drives the built-in reports.
165184

0 commit comments

Comments
 (0)