1#!/usr/bin/perl -w 2 3use strict; 4use DBI; 5 6my $project = shift; 7my $warns = shift; 8my $db_file = shift; 9 10if (!defined($db_file)) { 11 print "usage: $0 <-p=project> <smatch_warns.txt> <db_file>\n"; 12 exit(1); 13} 14 15my $db = DBI->connect("dbi:SQLite:$db_file", "", "", {AutoCommit => 0}); 16$db->do("PRAGMA cache_size = 800000"); 17$db->do("PRAGMA journal_mode = OFF"); 18$db->do("PRAGMA count_changes = OFF"); 19$db->do("PRAGMA temp_store = MEMORY"); 20$db->do("PRAGMA locking = EXCLUSIVE"); 21 22my ($dummy, $sql); 23 24open(WARNS, "<$warns"); 25while (<WARNS>) { 26 27 if (!($_ =~ /^.*? [^ ]*\(\) SQL: /)) { 28 next; 29 } 30 ($dummy, $dummy, $sql) = split(/:/, $_, 3); 31 32 $db->do($sql); 33} 34close(WARNS); 35 36open(WARNS, "<$warns"); 37while (<WARNS>) { 38 39 if (!($_ =~ /^.*? [^ ]*\(\) SQL_late: /)) { 40 next; 41 } 42 ($dummy, $dummy, $sql) = split(/:/, $_, 3); 43 44 $db->do($sql); 45} 46close(WARNS); 47 48$db->commit(); 49$db->disconnect(); 50