使用Rosecheckers檢查你的C程式碼

[ 介紹 ]

Rosecheckers(the ROSE CERT C Checkers)是CERT組識所提供免費的工具,用於對C/C++程式碼做靜態分析,執行後會顯示你的程式違反了CERT Secure Coding Standards裡的那些check rules。

CERT Secure Coding Standards提供了17種規則分類,每項定義都會有詳細的說明,正反面的範例,危險程度的分類,也會有人在討論,看著討論有時後更能體會出rule的真實性。rosecheckers是執行在Linux下的工具,使用的指令與gcc相同。


[ 心得 ]

使用起來比我想像中的還容易,我把一個project拿來當測試僅改下面兩行,就得到它不手軟的警句。

#CC=$(TOOLCHAINS_PATH_BIN)$(TOOLCHAINS_FILENAME_PREFIX)gcc$(FILE_EXT)
#CXX=$(TOOLCHAINS_PATH_BIN)$(TOOLCHAINS_FILENAME_PREFIX)g++$(FILE_EXT)
CC=/home/rose/workspace/rosecheckers/rosecheckers
CXX=/home/rose/workspace/rosecheckers/rosecheckers

[ 如何開始 ]

使用的方式有兩種,一是它們提供了Debian版本的VMware映像檔,另一是到GitHub抓下它的再建出環境。
1) VMware映像檔(rosebud-0.7)
2) Source Code on GitHub(rose.git)

我的使用方式採用VMware的版本透過Putty + WinSCP連進去操作。


[ Rules ]

SEI CERT C Coding Standard
1) Rule 01. Preprocessor (PRE)
2) Rule 02. Declarations and Initialization (DCL)
3) Rule 03. Expressions (EXP)
4) Rule 04. Integers (INT)
5) Rule 05. Floating Point (FLP)
6) Rule 06. Arrays (ARR)
7) Rule 07. Characters and Strings (STR)
8) Rule 08. Memory Management (MEM)
9) Rule 09. Input Output (FIO)
10) Rule 10. Environment (ENV)
11) Rule 11. Signals (SIG)
12) Rule 12. Error Handling (ERR)
13) Rule 13. Application Programming Interfaces (API)
14) Rule 14. Concurrency (CON)
15) Rule 48. Miscellaneous (MSC)
16) Rule 50. POSIX (POS)
17) Rule 51. Microsoft Windows (WIN)


[ 教學 ]

使用CERT提供的Debian VMware境環

  1. rosebud-0.7 rose帳戶的密碼是roserose
  2. Linux版本資訊。
-uname -a
Linux rosebud 2.6.32-5-686 #1 SMP Mon Oct 3 04:15:24 UTC 2011 i686 GNU/Linux。
  1. 牛刀小試先確定rosecheckers能正常執行。
    rosecheckers main.c
    2016-05-02_021959.png

  2. 修改project makefile後用PuTTY連操作得到的結果。
    2016-05-02_132931.png

    上面的EXP12-C, DCL13-C, INT07-C, ARR02-C 分別表示的意思是:
    EXP12-C: 違反Expressions第12-C項規定
    DCL13-C: 違反Declarations and Initialization第13-C項規定
    INT07-C: 違反Integers第07-C項規定
    ARR02-C: 違反Arrays第2-C項規定
    點進連結去看看,裡面寫的很詳細,也有正反兩個例子。

2. 下載GitHub上的rose.git自行建立

dougpuob@debian:~$ git clone https://github.com/rose-compiler/rose.git
我僅使用VMware的環境,人客們請自便。

Installing ROSE
http://rosecompiler.org/ROSE_HTML_Reference/installation.html

Alternatives GCC

// gcc:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.2 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 30

// g++
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.3 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.2 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.1 30

– END –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值