Skip to content

Commit fbf4798

Browse files
authored
Merge pull request #26 from OPPIDA/docs/readme
2 parents 7f0b20a + e886bb2 commit fbf4798

File tree

7 files changed

+158
-46
lines changed

7 files changed

+158
-46
lines changed

README.md

Lines changed: 43 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,56 @@
1-
# CodeSecTools
1+
<!--start-include-->
2+
# CodeSecTools <!-- omit in toc -->
23

34
<div align="center">
45
<img src="docs/assets/logo.svg" alt="Logo" style="width: 200px; height: auto;" />
56
</div>
67

78
A framework for code security that provides abstractions for static analysis tools and datasets to support their integration, testing, and evaluation.
8-
9+
<!--end-include-->
10+
11+
## Table Of Contents <!-- omit in toc -->
12+
- [Overview](#overview)
13+
- [Features](#features)
14+
- [SAST Tool Integration Status](#sast-tool-integration-status)
15+
- [Installation](#installation)
16+
- [Usage](#usage)
17+
- [Command-line interface](#command-line-interface)
18+
- [Python API](#python-api)
19+
20+
<!--start-include-->
921
## Overview
1022

1123
**CodeSecTools** is a collection of scripts and wrappers that abstract external resources (such as SAST tools, datasets, and codebases), providing standardized interfaces to help them interact easily.
1224

25+
For more details on the design and integration of SAST tools and datasets in CodeSecTools, please refer to the [documentation](https://oppida.github.io/CodeSecTools).
26+
1327
<div align="center">
1428
<img src="docs/assets/overview.svg" alt="CodeSecTools Overview" style="width: 75%; height: auto;" />
1529
</div>
1630

31+
## Features
32+
33+
- **Standardized SAST Tool Integration**: Provides a common abstraction layer for integrating various SAST tools. Once a tool is integrated, it automatically benefits from the framework’s core functionalities.
34+
- **Unified Dataset Integration**: Uses a similar abstraction for handling datasets, allowing for consistent benchmarking of SAST tools across different sets of codebases, whether they are collections of individual files or entire Git repositories.
35+
- **Project Analysis and Benchmarking**: Users can analyze their own projects or benchmark SAST tools against curated datasets to evaluate their effectiveness, including metrics like true positives, false positives, and false negatives.
36+
- **Concurrent Analysis for Cross-Verification**: CodeSecTools can run multiple SAST tools simultaneously on the same project. This allows for the aggregation and cross-verification of results, increasing confidence in the identified vulnerabilities by highlighting findings reported by multiple tools.
37+
- **Automated Reporting and Visualization**: The framework can generate detailed reports in HTML format and create graphs to visualize analysis results, helping to identify trends such as the most common CWEs or the files with the highest number of defects.
38+
1739
> [!WARNING]
18-
> This project provides wrappers and scripts to integrate with various third-party static analysis security testing (SAST) tools and datasets. It is important to note that this project **does not include** these third-party tools or datasets, unless otherwise specified. When a tool or dataset is included, its associated license file is also provided.
40+
> This project provides wrappers and scripts to integrate with various third-party static analysis security testing (SAST) tools and datasets. By default, this project **does not include third-party tools or datasets**. In the few instances where they are included, their associated license files are provided.
1941
>
2042
> Users of this project are solely responsible for reviewing, understanding, and complying with the licenses and terms of use associated with any third-party tools or datasets they choose to use through this framework. The respective licenses and terms can be found on the official websites or in the documentation of each tool or dataset.
2143
44+
## SAST Tool Integration Status
45+
46+
|SAST Tool|Languages|Maintained|Continuous Testing|Last Test Date|
47+
|:---:|:---:|:---:|:---:|:---:|
48+
|Coverity|Java|⚠️<br>(Deprioritized)|❌<br>(Proprietary)|October 2025|
49+
|Semgrep Community Edition|C/C++, Java|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
50+
|Snyk Code|C/C++, Java||❌<br>(Rate limited)|November 2025|
51+
|Bearer|Java|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
52+
|SpotBugs|Java|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
53+
|Cppcheck|C/C++|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
2254

2355
## Installation
2456

@@ -45,24 +77,14 @@ cd CodeSecTools
4577
pip install .
4678
```
4779

48-
## Features
49-
50-
- **Standardized SAST Tool Integration**: Provides a common abstraction layer for integrating various SAST tools. Once a tool is integrated, it automatically benefits from the framework’s core functionalities.
51-
- **Unified Dataset Integration**: Uses a similar abstraction for handling datasets, allowing for consistent benchmarking of SAST tools across different sets of codebases, whether they are collections of individual files or entire Git repositories.
52-
- **Project Analysis and Benchmarking**: Users can analyze their own projects or benchmark SAST tools against curated datasets to evaluate their effectiveness, including metrics like true positives, false positives, and false negatives.
53-
- **Concurrent Analysis for Cross-Verification**: CodeSecTools can run multiple SAST tools simultaneously on the same project. This allows for the aggregation and cross-verification of results, increasing confidence in the identified vulnerabilities by highlighting findings reported by multiple tools.
54-
- **Automated Reporting and Visualization**: The framework can generate detailed reports in HTML format and create graphs to visualize analysis results, helping to identify trends such as the most common CWEs or the files with the highest number of defects.
80+
- Update the project:
81+
82+
- Pull the latest changes:
83+
```bash
84+
git pull
85+
```
5586

56-
### SAST Tool Integration Status
57-
58-
|SAST Tool|Languages|Maintained|Continuous Testing|Last Test Date|
59-
|:---:|:---:|:---:|:---:|:---:|
60-
|Coverity|Java|<br>(Proprietary)|<br>(Proprietary)|October 2025|
61-
|Semgrep Community Edition|C/C++, Java|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
62-
|Snyk Code|C/C++, Java||<br>(Rate limited)|November 2025|
63-
|Bearer|Java|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
64-
|SpotBugs|Java|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
65-
|Cppcheck|C/C++|||[Latest PR](https://github.com/OPPIDA/CodeSecTools/actions/workflows/ci.yaml)|
87+
- Reinstall (in case dependencies changed)
6688

6789
## Usage
6890

@@ -123,13 +145,4 @@ for plot_function in graphics.plot_functions:
123145
fig = plot_function()
124146
fig.show()
125147
```
126-
127-
## Documentation
128-
129-
The documentation is available [online](https://oppida.github.io/CodeSecTools/).
130-
131-
Or, you can serve it locally:
132-
```bash
133-
pip install .[docs]
134-
mkdocs serve
135-
```
148+
<!--end-include-->

codesectools/sasts/all/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"""Initializes the All SAST module."""

docs/api/allsast.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
::: codesectools.sasts.all
2+
options:
3+
show_submodules: true
4+
show_if_no_docstring: true

docs/api/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
Available APIs:
44

55
- [`sasts`](./sast.md)
6+
- [`allsast`](./allsast.md)
67
- [`datasets`](./dataset.md)
78
- [`shared`](./shared.md)

docs/assets/overview.excalidraw

Lines changed: 105 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,41 @@
181181
"autoResize": true,
182182
"lineHeight": 1.25
183183
},
184+
{
185+
"id": "Yp-Ops1lm44S4mFwzv_v2",
186+
"type": "rectangle",
187+
"x": 719.2928134448903,
188+
"y": 269.6718345779226,
189+
"width": 362.3999938964843,
190+
"height": 141.5999298095703,
191+
"angle": 0,
192+
"strokeColor": "#1e1e1e",
193+
"backgroundColor": "#e9ecef",
194+
"fillStyle": "solid",
195+
"strokeWidth": 4,
196+
"strokeStyle": "solid",
197+
"roughness": 1,
198+
"opacity": 100,
199+
"groupIds": [],
200+
"frameId": null,
201+
"index": "b22G",
202+
"roundness": {
203+
"type": 3
204+
},
205+
"seed": 485793748,
206+
"version": 1598,
207+
"versionNonce": 1114887916,
208+
"isDeleted": false,
209+
"boundElements": [],
210+
"updated": 1764004560433,
211+
"link": null,
212+
"locked": false
213+
},
184214
{
185215
"id": "13dkZHvSDLQKbfPK5JpGL",
186216
"type": "rectangle",
187-
"x": 709.7904386974515,
188-
"y": 281.89503914969293,
217+
"x": 708.9904509044827,
218+
"y": 281.09506661551325,
189219
"width": 362.3999938964843,
190220
"height": 141.5999298095703,
191221
"angle": 0,
@@ -203,24 +233,24 @@
203233
"type": 3
204234
},
205235
"seed": 1483036838,
206-
"version": 1499,
207-
"versionNonce": 1672335482,
236+
"version": 1500,
237+
"versionNonce": 1068640724,
208238
"isDeleted": false,
209239
"boundElements": [
210240
{
211241
"type": "text",
212242
"id": "fsuA80u19oDfd_WXy5fbY"
213243
}
214244
],
215-
"updated": 1760631995840,
245+
"updated": 1764004513531,
216246
"link": null,
217247
"locked": false
218248
},
219249
{
220250
"id": "fsuA80u19oDfd_WXy5fbY",
221251
"type": "text",
222-
"x": 815.8244734264554,
223-
"y": 286.89503914969293,
252+
"x": 815.0244856334866,
253+
"y": 286.09506661551325,
224254
"width": 150.33192443847656,
225255
"height": 35,
226256
"angle": 0,
@@ -236,11 +266,11 @@
236266
"index": "b24",
237267
"roundness": null,
238268
"seed": 1552723450,
239-
"version": 1387,
240-
"versionNonce": 894148965,
269+
"version": 1388,
270+
"versionNonce": 1022742356,
241271
"isDeleted": false,
242272
"boundElements": [],
243-
"updated": 1760632001741,
273+
"updated": 1764004513531,
244274
"link": null,
245275
"locked": false,
246276
"text": "SAST Tool",
@@ -253,6 +283,36 @@
253283
"autoResize": true,
254284
"lineHeight": 1.25
255285
},
286+
{
287+
"id": "ljpVgLZj0RDw1SkVJgIQY",
288+
"type": "rectangle",
289+
"x": 1107.2928287036793,
290+
"y": 226.27181779325466,
291+
"width": 172.79998779296875,
292+
"height": 151.99999999999997,
293+
"angle": 0,
294+
"strokeColor": "#1e1e1e",
295+
"backgroundColor": "#e9ecef",
296+
"fillStyle": "solid",
297+
"strokeWidth": 4,
298+
"strokeStyle": "solid",
299+
"roughness": 1,
300+
"opacity": 100,
301+
"groupIds": [],
302+
"frameId": null,
303+
"index": "b24G",
304+
"roundness": {
305+
"type": 3
306+
},
307+
"seed": 892714580,
308+
"version": 820,
309+
"versionNonce": 1133845228,
310+
"isDeleted": false,
311+
"boundElements": [],
312+
"updated": 1764004596046,
313+
"link": null,
314+
"locked": false
315+
},
256316
{
257317
"id": "ehh88Kle4w-5mpVadmmlV",
258318
"type": "rectangle",
@@ -325,6 +385,36 @@
325385
"autoResize": true,
326386
"lineHeight": 1.25
327387
},
388+
{
389+
"id": "Y1koFTBntLWjV_oBg9Et0",
390+
"type": "rectangle",
391+
"x": 1105.6928531177418,
392+
"y": 400.07185136259056,
393+
"width": 172.79998779296875,
394+
"height": 261.59994506835926,
395+
"angle": 0,
396+
"strokeColor": "#1e1e1e",
397+
"backgroundColor": "#e9ecef",
398+
"fillStyle": "solid",
399+
"strokeWidth": 4,
400+
"strokeStyle": "solid",
401+
"roughness": 1,
402+
"opacity": 100,
403+
"groupIds": [],
404+
"frameId": null,
405+
"index": "b26G",
406+
"roundness": {
407+
"type": 3
408+
},
409+
"seed": 1150040660,
410+
"version": 1164,
411+
"versionNonce": 891305940,
412+
"isDeleted": false,
413+
"boundElements": [],
414+
"updated": 1764004639763,
415+
"link": null,
416+
"locked": false
417+
},
328418
{
329419
"id": "bm_HYs349MNhCJXSJAr-s",
330420
"type": "rectangle",
@@ -864,20 +954,20 @@
864954
"index": "b2K",
865955
"roundness": null,
866956
"seed": 123664058,
867-
"version": 1623,
868-
"versionNonce": 199624230,
957+
"version": 1625,
958+
"versionNonce": 396867028,
869959
"isDeleted": false,
870960
"boundElements": [],
871-
"updated": 1760631995840,
961+
"updated": 1764004650574,
872962
"link": null,
873963
"locked": false,
874-
"text": "Abstract\nSAST result",
964+
"text": "Abstracted\nSAST result",
875965
"fontSize": 16,
876966
"fontFamily": 5,
877967
"textAlign": "center",
878968
"verticalAlign": "middle",
879969
"containerId": "8qAhylsGA8gx_F27etVCZ",
880-
"originalText": "Abstract\nSAST result",
970+
"originalText": "Abstracted\nSAST result",
881971
"autoResize": true,
882972
"lineHeight": 1.25
883973
},

docs/assets/overview.svg

Lines changed: 1 addition & 1 deletion
Loading

mkdocs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ nav:
1919
- API Reference:
2020
- api/index.md
2121
- SAST Tools: api/sast.md
22+
- All SAST: api/allsast.md
2223
- Datasets: api/dataset.md
2324
- Shared: api/shared.md
2425

@@ -75,6 +76,8 @@ plugins:
7576
nav_file: SUMMARY.md
7677
- include-markdown:
7778
rewrite_relative_urls: true
79+
start: <!--start-include-->
80+
end: <!--end-include-->
7881
- mkdocstrings:
7982
handlers:
8083
python:

0 commit comments

Comments
 (0)