# Frama-C 環境架設心得
Frama-c C 語言驗證工具組
> 自己的期許希望可以減少自己犯傻的錯誤
## 安裝
https://frama-c.com/html/installations/manganese.html#installing-frama-c-on-windows-via-wsl
WSL 需要額外安裝
```bash
sudo apt install yaru-theme-icon
```
## WSL執行
https://frama-c.com/html/installations/manganese.html#installing-custom-versions-of-frama-c
```bash
export LIBGL_ALWAYS_INDIRECT=1
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0
frama-c-gui
```
## Ubnubtu 執行
Ubuntu 需要在~/.bashrc 最後一行放這一段 就可以執行opam 的Code 了
```bash
eval `opam config env
```
## 官方教學
https://frama-c.com/html/teaching.html
> 好多法文看不懂
## 範例A
https://frama-c.com/fc-plugins/eva.html

1. 設定EVA 的Main 為fact
2. 按下Run
3. 點選中間畫面的變數,x、y、z 下方就可以看到順序
## 範例B 分析Arduino Code 當作Real Code 好了
### 目標計算出#define 的變數結果
https://frama-c.com/2018/07/06/Parsing-realistic-code-bases-with-Frama-C.pdf
## 閱讀清單
- [ ] https://allan-blanchard.fr/publis/frama-c-wp-tutorial-en.pdf
- [ ] frama-c-eva-manual.pdf
- [ ] Apreenix A.
- [ ] https://arxiv.org/pdf/2111.08208.pdf
- [ ] http://julien.signoles.free.fr/publis/2016_rv.pdf
- [ ] https://julien-signoles.fr/publis/2013_rv.pdf
- [ ] https://nikolai-kosmatov.eu/publications/blanchard_kl_hpcs_2018.pdf