---
title: Development Tools
tags: wp2, slides
type: slide
---
# Development Tools
---
## Goals
- Reduce the effort for developers
- Increase software security, detecting more vulnerabilities
- Maintain a software in an easier way
---
## Tools
- sifis-generate
- complex-code-spotter
- weighted-code-coverage
---
## Why Rust?
- Memory safety without the need of a garbage collection
- Possibility to optimise software both in time and memory
- Writing parallel code in an easier way
- Package and deploy software in a few steps
- Support the most known platforms, such as Linux, macOS and Windows and bare-metal targets
---
# sifis-generate
---
## sifis-generate
- Reduce the conceptual effort requested by developers to set up a CI pipeline
- New project from scratch or series of CI configuration files to an existing project
- Different languages (C/C++, Python, Java, JavaScript, Rust)
- Usage of templates to produce scripts and files
---
## sifis-generate
<style>
img[alt~="center"] {
display: block;
margin: 0 auto;
}
</style>

---
## sifis-generate
```
sifis-generate cargo [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path
```
---
## sifis-generate
- C/C++ -> Meson
- Python -> Poetry
- Java -> Maven
- Rust -> Cargo
- JavaScript -> Yarn
---
# complex-code-spotter
---
## complex-code-spotter
- Detect pieces of complex code through complexity metrics
- Use *rust-code-analysis*, a Mozilla tool, for metrics computation
- Possibility to set thread numbers and filter files according to their extension
---
## complex-code-spotter
<style>
img[alt~="center"] {
display: block;
margin: 0 auto;
}
</style>

---
## complex-code-spotter
*Simple usage*
```
complex-code-spotter -c cyclomatic:3 -c cognitive:16 /path/to/your/file/or/directory /output/path
```
---
## complex-code-spotter
*Consider only `*.rs` files*
```
complex-code-spotter -I "*.rs" /path/to/your/file/or/directory /output/path
```
*Exclude only `*.rs` files*
```
complex-code-spotter -X "*.rs" /path/to/your/file/or/directory /output/path
```
---
# weighted-code-coverage
---
## weighted-code-coverage
- Combination of code complexity and code coverage into four new metrics
- Two metrics have been created in the SIFIS-Home project: **wcc-plain** and **wcc-quantized**
- Use *rust-code-analysis* for code complexity computation
- Chunks, threads and granularity
---
## weighted-code-coverage
<style>
img[alt~="center"] {
display: block;
margin: 0 auto;
}
</style>

---
## weighted-code-coverage
*Simple usage*
```
weighted-code-coverage [OPTIONS] --path_file <PATH_FILE> --path_json <PATH_JSON>
```
---
## weighted-code-coverage
*Select complexity metric*
```
weighted-code-coverage --path_file <PATH_FILE> --path_json <PATH_JSON> -c cognitive
```
*Choose the mode used for the analysis*
```
weighted-code-coverage --path_file <PATH_FILE> --path_json <PATH_JSON> -m functions
```
*Choose thresholds*
```
weighted-code-coverage --path_file <PATH_FILE> --path_json <PATH_JSON> -t 50.0,0.7,65.0,45.0
```
---
## Next tools releases?
### sifis-generate
- Fixed many issues related to the tools for dynamic analysis
- Refactored the code
### complex-code-spotter
- No issues found so far
### weighted-code-coverage
- Added HTML output
---
## Links
- [https://github.com/sifis-home/sifis-generate](https://github.com/sifis-home/sifis-generate)
- [https://github.com/sifis-home/complex-code-spotter](https://github.com/sifis-home/complex-code-spotter)
- [https://github.com/sifis-home/weighted-code-coverage](https://github.com/sifis-home/weighted-code-coverage)
---
# Any question?