2021-11-08 15:32:39 +01:00
|
|
|
|
# Code analyzer
|
|
|
|
|
|
2021-11-08 15:33:20 +01:00
|
|
|
|
## Sujet
|
2022-01-07 12:52:33 +01:00
|
|
|
|
|
|
|
|
|
Un programme peut être considéré comme un graphe orienté où chaque fonction est
|
|
|
|
|
un noeud. Prendre un programme important (plusieurs dizaines de fichiers,
|
|
|
|
|
plusieurs dizaines de milliers de lignes de code) et l’analyser sous la forme
|
|
|
|
|
d’un graphe (Mco, Vec). On doit chercher les composantes connexes et les
|
|
|
|
|
cycles.
|
2022-01-04 13:12:29 +01:00
|
|
|
|
|
|
|
|
|
## Programmes testés
|
|
|
|
|
|
2022-01-07 12:52:33 +01:00
|
|
|
|
* [st](https://st.suckless.org/)
|
|
|
|
|
* [dwm](https://dwm.suckless.org/)
|
|
|
|
|
* [neovim](https://github.com/neovim/neovim)
|
|
|
|
|
* code-analyzer
|
|
|
|
|
* test.c
|
|
|
|
|
|
|
|
|
|
## Compilation et execution
|
|
|
|
|
|
|
|
|
|
### Compilation
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
$ make fclean; make # fclean pour supprimé le graph.dot s'il existe
|
|
|
|
|
# car dans le programme je l'ouvre avec flag append
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Execution
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
$ ./code-analyzer --help
|
|
|
|
|
$ ./code-analyzer -p ./src/ -c --print-vec --cycles-vec
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Generation de pdf
|
|
|
|
|
|
|
|
|
|
Pour generer un pdf du graphe, il faut avoir installé `graphviz`.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
$ make graph
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Cela va genere le fichier **graph.pdf**.
|