Loading article…
| 開発者 | スプリント開発者 |
|---|---|
| 安定版リリース | 3.1.2 / 2007年7月12日 |
| リポジトリ | github.com/splintchecker/splint |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 静的コード分析 |
| ライセンス | ライセンス |
| Webサイト | 詳しくはこちら |
Splint は、Secure Programming Lintの略で、C プログラムのセキュリティ上の脆弱性やコーディングミスを静的にチェックするプログラミングツールです。以前は LCLint と呼ばれていましたが、 Unix lintツールの最新バージョンです。
Splintはソースコードへの特別な注釈を解釈する機能があり、ソースだけを見るよりも強力なチェックが可能です。Splintは、欠陥ゼロ設計の取り組みの一環としてgpsdによって使用されています。 [1]
Splint は、 GNU General Public Licenseの条件に基づいてリリースされたフリーソフトウェアです。
Splintの主な開発活動は2010年に停止しました。SourceForgeのCVSによると、2012年9月時点でリポジトリの最新の変更は2010年11月でした。[2] GitHubのGitリポジトリには、2019年7月からのより最近の変更が含まれています。[3]
例
#include <stdio.h> int main () { char c ; while ( c != 'x' ); { c = getchar (); if ( c = 'x' ) return 0 ; switch ( c ) { case '\n' : case '\r' : printf ( "Newline \n " ); default : printf ( "%c" , c ); } } return 0 ; }
Splintの出力:
定義前に使用される変数c 無限ループの疑いがあります。ループ テスト (c) で使用される値は、テストまたはループ本体によって変更されません。 int を char に代入: c = getchar() 代入式の場合のテスト式: c = 'x' ブール値でない場合のテスト式、char 型: c = 'x' フォールスルーケース(先行ブレークなし)
修正されたソース:
#include <stdio.h> int main () { int c = 0 ; // 初期代入定義を追加しました。
while ( c != 'x' ) { c = getchar (); // c の型を int に修正if ( c == 'x' ) // 代入エラーを修正して比較演算子にします。return 0 ; switch ( c ) { case '\n' : case '\r' : printf ( "Newline \n " ); break ; // フォールスルーを防ぐために break ステートメントを追加しました。default : printf ( "%c" , c ); break ; // 良い習慣として、default catch に break ステートメントを追加しました。} } return 0 ; }
参照
参考文献
- ^ Raymond (2012). Brown, Amy; Wison, Greg (編). オープンソースアプリケーションのアーキテクチャ、第2巻 (Eric 編). Lulu. ISBN 9781105571817。
- ^ 「Splint プロジェクト CVS 統計」 。2012年 9 月 11 日閲覧。
- ^ 「Splint プロジェクトの Git 履歴」。GitHub。2020年 9 月 16 日閲覧。
外部リンク
- SourceForgeの Splint (プログラミング ツール)
