2014-01-21 35 views
0

Xcode使用的Clang靜態分析器使用檢查器來識別源代碼中的警告和錯誤。我想用一個檢查器來檢測何時使用sqlite,並調用sqlite3_prepare_v2而不調用sqlite3_finalize是否有用於sqlite問題的Clang靜態分析器檢查器?

以下是現有檢查器的列表。

http://clang-analyzer.llvm.org/available_checks.html

這裏是潛在的跳棋列表。

http://clang-analyzer.llvm.org/potential_checkers.html

是否有任何跳棋在那裏特有的sqlite的可能解決這個問題?是否有另一種自動檢測缺失/不平衡呼叫的方法?

回答

0

不幸的是沒辦法。

只有你能做的是,確保你在sqlite3_prepare塊內寫入了sqlite3_finalize而不是在外面寫。這將處理sqlite3_prepare故障問題。

if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK) 
{ 
    int res=sqlite3_step(statement); 
    result=res; 
    sqlite3_finalize(statement); 
} 

如果您wtitten sqlite3_finalizesqlite3_prepare塊之外,將同時sqlite3_prepare語句失敗導致的問題。

請看看下面這個例子:Accessing a SQLite Database with C++

+0

在這段代碼是不放在準備塊中的通話敲定。它反而像這樣。 'if(stmt)sqlite3_finalize(stmt);'這有道理嗎? – Brennan

+0

我在答案中加入了更多細節。 –

相關問題