Xcode使用的Clang Static Analyzer使用检查程序识别源代码中的警告和错误。我想使用检查程序检测何时使用sqlite并调用sqlite3_prepare_v2
而不调用sqlite3_finalize
。
以下是现有检查器的列表。
http://clang-analyzer.llvm.org/available_checks.html
以下是潜在的跳棋清单。
http://clang-analyzer.llvm.org/potential_checkers.html
是否有任何特定于sqlite的检查器可以解决此问题?还有另一种自动检测丢失/不平衡呼叫的方法吗?
答案 0 :(得分:0)
不幸的是没办法。
只有你可以这样做,确保你已在sqlite3_finalize
块内写了sqlite3_prepare
而不是写在外面。这将处理sqlite3_prepare
失败问题。
if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK)
{
int res=sqlite3_step(statement);
result=res;
sqlite3_finalize(statement);
}
如果您在sqlite3_finalize
块之外的sqlite3_prepare
,则会在sqlite3_prepare
语句失败时导致问题。
答案 1 :(得分:0)
有一个Clang Static Analyzer,您可以在https://github.com/XSecurity/XSecurity
中找到它