問題タブ [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.
c - complex.hを含むコードでスプリントが失敗する
複雑な演算をサポートするために、標準Cライブラリをsplint
含むCソースで実行しようとしています。complex.h
残念ながら、splint
次のエラーで失敗します。
Splint 3.1.2---2009年5月3日
/usr/include/bits/cmathcalls.h:54:31:解析エラー:非関数宣言:_Complex:externdouble。(解析エラーのヘルプについては、splint -help parseerrorsを参照してください。)***続行できません。
問題をグーグルで検索すると、分割ディスカッションメーリングリストにこのメッセージのみが表示されました(未回答のままです)。
何か案は?
アップデート
失敗したソースの非常に簡単な例を次に示します。
_Complex
サポートされていないC99キーワードを再定義しようとすると、複素数の虚数部でエラーが発生します(これは驚くことではありません)。
c - C用スプリントコードアナライザー
CコードベースのコードアナライザーとしてSplintを使用することを計画しています。しかし、これまでSplintツールを試したことはなかったので、そのメリット、長所、短所について意見を求めています。
parsing - Splintで解析エラーを解決する方法
Splintは、解析エラーを見つけた後、チェックを続行していません。+ trytorecoverオプションも試してみましたが、変更はありません。
+ trytorecoverを使用して、解析エラーの後にSplintが続行を試行する方法を教えてください。
これが私が受け取っているものです、
c - このスプリント警告の意味と、何が間違っている可能性がありますか?
これはコード行です:
splint 3.1.2 を実行すると、次の警告が生成されます。
パラメータに名前を付けても違いはありません。
c - C99の一部である__threadのスプリントバーフ
ランニングスプリント
この行で停止します:
解析エラーの場合:
ドキュメントとうがいをチェックすると、の言及はありません__thread
。ただし、これはSplintがサポートしているとされる__thread
C99仕様の一部です(参照を挿入)。
何が起きてる?スプリントに認識させるにはどうすればよい__thread
ですか?
c - スプリントのデバッグ解析エラー
(Ubuntuリポジトリから)スプリントを使用するのはこれが初めてで、すぐにWTFに見舞われました。エラーメッセージ:
さて、どうやら16行目、6列目に何か問題があるようです。それをチェックしてみましょう(完全なコードを投稿してください):
このプログラムはエラーなしでコンパイルされ ( gcc -Wall -std=c99 brainfuck.c
)、ランタイムは正常に動作することに注意してください。
注: ブレインファックという名前に気分を害する場合は、それを受け入れてください。作者がそのように命名したプログラミング言語であり、私はその名前を尊重して使用しています。
c - 関数ポインタが原因で、スプリントの警告「ステートメントは効果がありません」
Splint (厳密モード) で C プログラムをチェックしようとしています。Splintが私のプログラムを理解できるように、ソース コードにセマンティック コメントで注釈を付けました。すべて問題ありませんでしたが、警告を取り除くことができません:
ステートメントは効果がありません (制約のない関数 my_function_pointer への呼び出しにより、影響を受けない変更が行われる可能性があります)。
ステートメントには目に見える効果はありません --- 値は変更されません。制約のない関数への呼び出しを通じて何かを変更する場合があります。(-noeffectuncon を使用して警告を禁止します)
これは、関数ポインタを介した関数呼び出しが原因です。私はフラグを使用しないことを好みますが、no-effect-uncon
それを修正するためにいくつかの注釈を書きます。typedef
そのため、適切な句で装飾しました@modifies
が、Splint はそれを完全に無視しているようです。問題は次のように縮小できます。
マニュアルを読んだのですが、関数ポインタとそのセマンティックアノテーションに関する情報があまりなく、何か間違ったことをしているのか、それともバグなのかわかりません (ちなみに、ここにはまだ記載されていません)。 : http://www.splint.org/bugs.html )。
ストリクト モードで Splint を使用して、このようなプログラムを正常にチェックできた人はいますか? Splintを幸せにする方法を見つけるのを手伝ってください:)
前もって感謝します。
更新 #1: splint-3.1.2 (Windows バージョン) では警告が表示されますが、splint-3.1.1 (Linux x86 バージョン) では警告が表示されません。
更新 #2: Splint は、割り当てと呼び出しが短いか長いかは気にしません。
更新 #3:警告を禁止することに興味はありません。簡単だ:
私が探しているのは、表現する正しい方法です:
「この関数ポインタは関数を指しているため
@modifies
、副作用があります」
c - PTHREAD_COND_INITIALIZER vs スプリント
次のコードがあります
Splint を使用すると、次のエラー/警告が表示されます
静的な watchdogCond._データ。null 値に初期化された _mutex: watchdogCond._ data. _mutex = (void )0 null 注釈のない参照が割り当てられるか、NULL に初期化されます。/ @null@*/ を使用して、null ポインターの可能性がある参照を宣言します。(警告を禁止するには -nullassign を使用します)
これの問題は何ですか?それは本当の危険ですか?
c - スプリントがcurl/curlbuild.hを解析しないのはなぜですか?
私はfornol.c
curlライブラリを使用するプログラムを作成したため、次のものが含まれています。
プログラムで実行したいのですsplint
が、これは私が得るエラーです:
の疑わしい行はcurlbuild.h
次のようになります。
どこCURL_TYPEOF_CURL_SOCKLEN_T
にいる#define
のかsocklen_t
。
私はここで何か間違ったことをしていますか?プログラムで機能させるには、スプリントにどのフラグを渡す必要がありますか?