問題タブ [splint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3068 参照

c - Linux UbuntuでCプログラム用にスプリントを使用するには?

splint が C プログラムの問題に関する警告メッセージを発行することを知っています。

「sudo apt-get install splint」を使用してUbuntuにインストールしました。

Cプログラムまたはプログラムでそれを使用するにはどうすればよいですか?

0 投票する
1 に答える
286 参照

c - 構造内のファイルポインタを閉じた後、スプリントがメモリリークを主張

私はスプリントの使い方を学びながら、C を再学習しようとしています。 安全第一!

その中にファイルポインターを持つ構造があります。ファイル ポインタは、コンストラクタ関数内で開かれ、デストラクタ関数内で閉じられます。構造体型定義で注釈が付けられて/@only@/おり、splint は、構造体内のファイル ポインターがそのメモリへの唯一のポインター (以下の詳細を参照) であることを認識しているようです。

デストラクタ関数では、ファイル ポインタが null でない限り、ファイルは閉じられます。

ただし、 splint は、 filepointer である限りファイルが閉じられているにもかかわらず、ファイル ポインターが解放されず、メモリ リークが発生していると不平を言っているようです!= NULL

コードは次のとおりです。

そして、それは次のエラーを引き起こします:

2 番目のエラー:なぜ splintは が経由されているのにfilestruct->fileが閉じられていないと考えるのですか?File_closefclose

0 投票する
2 に答える
799 参照

mplab - MPLAB を使用した windowsms での静的コード解析に splint を使用する方法 システム ファイルの解析エラーを回避する方法

Windows 上の PIC32 (XC32 v1.40 コンパイラ) で MPLAB X (3.26) を使用しています。レビューの一環として、誰かのコードの静的コード分析を行うためにスプリントを使用しようとしています。コンパイラの定義と検索パスのほとんどを並べ替えましたが、PIC32 std インクルード ファイルの解析エラーを回避するには少し困惑しています。

スプリントを実行するために使用しているコマンドは

出力は次のようになります

最後の 1 つは、物事を停止させます。-skip-iso-headers のようなことを試しましたが、うまくいきませんでした。standard.lcd ファイルと xc32 std ファイルに問題があるようです。

誰か教えてくれませんか

  • < Location unknown >: Field name reused:手段またはおそらく言及しているものは何ですか?
  • std ヘッダー ファイルによる解析エラーを解決する方法はありますか?

これまでのところ、ヘッダー ファイルの問題を解決する唯一の方法は、型を定義することです。

0 投票する
0 に答える
263 参照

c - Splint によって処理されるコードでのバイナリ定数 (プレフィックス 0b) の使用

GCC Web サイトSDCC マニュアル§3.5.7によると、GCC と SDCC の両方で、10 進数の 2 を表す次のようなバイナリ定数を使用できます。0b0010

残念ながら、以下に示すように、スプリントはこれをうまく処理できず、解析エラーが発生するようです。

binaryConstants.c

出力

+gnuextensions で出力

この拡張機能を C に許可するフラグはありますか?

0 投票する
1 に答える
218 参照

c - Splint: 定義前に使用されるローカル変数

ローカル変数が設定されていないときに「ランダムな」値を持つことができることは知っていますが、ローカル変数の最初の値をポインターで設定するのは悪いことですか? 例えば:

setValue は、参照される変数の値を設定するだけで、読み取ることはありません。Splint は、val が「定義の前に使用される」ことを警告します。私は、printf が実行されて val が使用される前に val の値が設定されると信じているため、その警告に少し驚いています。初期値を設定するために使用されている基準を認識できるほど、スプリントは十分に進んでいませんか?