ClabureDB
Documentation

Contents

Availability

The database is available either as a web application or as a separate SQLite 3 database. The former is good for simple queries like listing through all the errors, or errors of some kind, whereas the latter offers a full set of SQL to be executed on the database. This allows for generation of arbitrary statistics or performing various cross-queries to compare the errors with errors found by third-party tools for example.

Download

See the frontpage for download links.

License

The database is licensed under the Open Database License (ODbL) v1.0 terms of use.

Installation

Obviously, the web application needs no installation steps at all. On the other hand, if you decide to download and use the database locally, you need SQLite too. It is simply a matter of downloading a client from their website and unpacking it.

All Linux, Mac OS and Windows are supported. It may as well work on other platforms when compiled from sources. Having the client, proceed with the Local Database Use section below.

Web-interface Use

The frontend is designed to be easy-to-use. After selecting a project on the front page, there is a list of reports. They are all split into error type categories in a table. The table allows selection of any kind of reports in four modes: real errors, false positives, unclassified, and all reports. The frontend also allows for searching in the database, currently only by a file location.

When a particular list of errors is shown, it can be sorted according to error type, file/line or marking (real error/false positive/unclassified). Every error in the list contains also details which might be shown by clicking on the Details button. And whenever a source code is available the error is highlighted in that.

Frontpage Snapshot Error List
Fig. 1: Frontpage: Bugs in Categories
Fig. 2: List of Errors Selected via the Frontpage

Local Database Use

Having the client, the use is as simple as:

sqlite3 database.db 'SQL query'

The command-line (blue line) may for instance look like:

sqlite3 database.db 'SELECT loc_file, loc_line FROM error;'
mm/vmalloc.c|292
net/core/skbuff.c|147
…

Here, we retrieved a list of all files and lines where a bug was found by an arbitrary tool. Or we may construct more complicated queries like "return the count of all real bugs found by tool 1 and not found by tool 2":

sqlite3 database.db 'SELECT COUNT(id) FROM error WHERE marking > 0 AND
	id IN (SELECT error_id FROM error_tool_rel WHERE tool_id = 1) AND
	id NOT IN (SELECT error_id FROM error_tool_rel WHERE tool_id = 2);'
105

For even more, you more likely would need to know the database structure. It may be obtained by .schema command (cf. ERD diagram). Then you can execute any query the database is able to run. If you are unsure about the SQL syntax of SQLite, please refer to the SQLite user's manual.

Contact

The database does not pretend by any means to be complete. Do not hesitate to contact us in case you have a full set of errors reported by other tools or you have such a tool and may provide us with that. We will also appreciate any suggestions to improve the database or the web frontend, or another relevant data you would like to share with us. Finally, any kind of help to improve the database is gladly welcome. You can always reach us at claburedb@fi.muni.cz.