Skip to content

Pluralscan/Pluralscan

Repository files navigation

Project scraping

Pluralscan is a source code analysis software, that's combine the best features of open sources security tools into a single solution.

  • Software Composition Analysis aka SCA
  • Static Application Security Testing aka SAST
  • Dynamic Application Security Testing aka DAST
  • Code Quality Analysis with Linter's
  • Active security testing with Fuzzing Tools
  • Prevents unwanted law complication by checking open source license compliance
  • Benchmark results provided by different tools
  • ...

Project scraping

WARNING

Pluralscan should be currently considered as a POC/POW project that try to demonstrate how to realize a complexe business oriented software in Python by following Domain Driven Design concepts.

Features

  • Fetch open-source projects from various locations (Git, Github, Gitlab, Disk...).
  • Fetch software packages built with various packaging systems (pip, poetry, npm, pip, cargo, go...)
  • Plan code analysis batch on a package with various analyzers (Roslyn, Sonar, Security Code Scan...).
  • Centralize and persist analysis reports into a generic business model representation.
  • Monitor and provide assistance to reduce technical debt.

Project scraping

Team Shared Vision

Pluralscan-Technical Knowledge

Domain Model

Ongoing work, so many changes should be expected.

Projects Management

Projects Management

Packages Management Domain

Packages Management

Security Tools Domain

Security Tools

Scan Proces Domain

Security Tools

Roadmap from June 2022 to December 2022

Pluralscan Roadmap

Getting started with Docker

docker-compose

Setup a complete stack with MongoDB, Redis and Pluralscan. (Known issue with analyzer execution, fix comming soon)

docker-compose up

Remove containers.

docker-compose down

Check Redis

  • Navigate to http://localhost:8001
  • Accept RedisInsight license.
  • Login with the password defined inside .docker.env

Check Mongo

Check Apache Solr

Stack Overview

Core Developement

  • Python 3.10 as language and runtime environment.
  • asyncio to declare coroutines and execute concurrent code
  • poetry for packaging and dependency management.
  • pytest framework for testing.
  • pytest-cov
  • mypy for static type checking.

Recommendation

  • Use pathlib for handling cross-platform file path.

Backend Web Application (API)

Front-end Web Application

  • NodeJS 16.13.0 as runtime environment.
  • Typescript as main language.
  • Svelte 3 as front-end framework.
  • Carbon Design System for Svelte as design framework.
  • jest as testing framework.
  • ts-jest for writing tests in Typescript.
  • svelte-jester for precompile svelte components before importing them in to tests.
  • tailwindcss as utility css framework.
  • PouchDB used to sync data from CouchDB Server on client device for offline usage.

Commandline CLI Application

  • Python 3.10* as language and runtime environment
  • asyncio to declare coroutines and execute concurrent code

Technologies Overview

Data Management & Persistence

Messaging

Containerization

Cloud Infrastructure

Static Code Analyzis Tools

Security Analysis

Linters

Development

IDE

Visual Studio Code

Commandline

TODO.

Web Application

Pluralscan TS Api Client

cd pluralscan-api-client
npm install
npm run build

Svelte (Single Page Application)

Install
cd pluralscan-svelte
npm install
Run Svelte Rollup Dev Server (Hot Reloading)
cd pluralscan-svelte
npm run dev
Build and upgrade front-end libs (until npm)
Powershell
cd pluralscan-svelte
npm run build

The build process will output directly into the API project.

Check

To verifiy if the project is error free, you can use the CLI tool svelte-check. It acts like an editor asking for errors against all of .svelte files.

npx svelte-check
Debug

From VS Code Debug View, run the "Debug FastApi" profile for start a dev web service with debuging.

Tests

Usecases

Scan Package

Coverage

https://coverage.readthedocs.io/

Code coverage analysis with HTML report

py -m coverage html --skip-empty
cd htmlcov

References

Books

Python

Microservices

DDD

Methodology

Events

Patterns

CQRS

Usefull resources

About

Pluralscan is a source code analysis software, that's combine the best features of open sources security tools into a single solution.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published