Skip to content

Comparison with SpotBugs

Github Projects

Project Commit Line of Code
spring-boot-api-project-seed c305af6a6bb2b698b02d731ac27218bff51c5c1c 478
spring-boot-projects 2071c1da1f27e6e5034f7619c8c08d84cab71e77 3045
jetty.project 1cb0a4978f86f6d0800bb8a4262b7810a253c581 329493
heritrix3 37ce8d694590b0cf8cbe0a38a58c5f8ee719c4f0 41275
webcam-capture edc89234067cba2766c2d031cf61a9b592e3600c 16021
paho.mqtt.java 6f35dcb785597a6fd49091efe2dba47513939420 28441
smarthome 56df0fa09d84912b96c7c8d1f229ca59938d4858 181527
SpringBootUnity 073cb8ef5e32ad195c60bb52f54b94ec31e5410d 5861
rakam-api 26ffbc75c3cc2e747d721b96ad6b1f51da09ea0f 14193
kafka-streams-machine-learning-examples 3977e3928d2719fc710bb3d202851ee8904be2e7 99401
quickfixj 1968f7abb981f486539a4cf3e4ae81fa5c554ec8 1279492
nacos-spring-project d61ba1761b5fb875de03b9377b7e3c5cb7e44d9b 7398
jave2 23a26109f59a04e65a8a1dc3a0e42be0033a2e7c 4339
hprose-java a535b8682547549ba9cc3a04e7acdc9af9894708 15845
spring-cloud-release 10801b4df944fdb5d2dae612ca957914492af6ab 488
lavagna 385016963bfc2201e082f5e7edfe81ef1146fc55 20694
nacos-spring-boot-project d77d02926da347bc72f900a2c95bfd8229132197 1802
java-speech-api bd278833f12186750f321bdbba26aae747de51b2 1374
java-uuid-generator 959d0e8c142425e8ed0cdbf0f0ad14bb5ae9d451 3073
enunciate f69749c57fcb8eaee8dbd12d01e916ac0c65cc3f 54210
camelinaction2 9921df2acbe6e3c1d825f4455668097db0205841 17832
wro4j 75922b77298968586643e6ac0f5fcf8fd985a904 33410
biojava 1d03fb4faaa435aff8903483930b60eac8eff56d 117779
GlobalPlatformPro 2cde69d4b966bff11cd363c395ed5ff978289257 3732
thorntail d76ec226e3e74deef35a54d7f2d6bf651d286be7 137847
spring-comparing-template-engines 2bb3333e323dfebd2c932403926e52cf8fb247f8 908
jmc 0c7ae2a0f6423d76f74d9dba53fe5d693a3a7c0c 163462
sharpen 0a539c4e6ab58c462baf3b999c1f4a53b6fa113e 9334
Benchmark ef7ec5f317c6c47d935a955c6efc35e0e583a40c 146265
owasp-java-encoder fa5c589fb6037e0b7e9bb6b21b537a5411420ac7 3264
core 4c18b6b8046ce0490ae8f9bded31fe3d248a7f73 108489
java-spring-cloud 76fc7de41a7c26590c9fff59d7ef211d87f7cc3f 5340
Springy-Store-Microservices 786c0c7cf62364c94fe9a148310567c9adbfb244 2903
jmh f3e7d82b0b68ab345f81e0598c7f850c5b334027 249879
fabric8-maven-plugin 2631458a22ccc8f4110c090b3564b9178dc5ec13 48011
simple-sso d3b33a5788c071f294a5a41a61192ef03ba1e744 390
raml-for-jax-rs aa24bf32b926f23f5c1826fdada07f4c1cc64c77 14789
common-project ff019b8b24a984fb265f92d840a1a0705f174fe6 5754
hadoop-mini-clusters 787a02c728a1035c0742a22468a227616dc748d0 9499
qulice e296098d1722f13ad6644f6a2958b5e8d1cbc47c 6557
superword fad61fad5ea688ff5bf8838ee2a9b5ba2ae81349 9079
java-microservice 2880ffb60cf0cd0afd8455cbeb1789a51ffbb62f 2593
ORCID-Source 647c4206daabb8b6d9bdb44059aabc07c16540e7 247335
demo-rest-jersey-spring a46ab55dbb6ecd5e97cdc253036b068d02e5573b 1115
aws-java-sample 159b1d4edec782c28a13e1cf891f87d01fb6ff0f 89
camelinaction 1d74f64c4aefd318baee21cb1b53928bc9f45763 7586
ShoppingCart f3793243e868f246806d54571c94c7251db2c22a 1255
iot-dc3 62fd0a51a59e249b7de66e87ea7978edffff7ee0 14671
gchisto d140c4d313182b0a06af10905be1ece648c35932 6574
opencc4j 9ccd603beadde849faba169f7b6b590e0c73ef49 872
visualee 88732d9dbe5031dad9c9f85a4c4b35e5f1551f95 3762
ProjectAres 7484cb81fcc33814fe26812684660da4e0dbd671 90184
appbundle-maven-plugin 4cdaf7e0da95c83bc8a045ba40cb3eef45d25a5f 420
reactive-ms-example c40d5855ce2c5e0b6dfb06aa4a421ae9560d6548 1485
microservices-sample 994956f01093c78eb7d8275c1a30c8e385e498d4 672
hope-cloud b3a0673325210efaa97502c2d3eb584d18f1dafb 135
javaee7-essentials-archetype 3ea15d451574e118ef9ccff69a5e6ac9d6371a7b 5
pandomium 4d730c265ad324aea9dada15a29c9465169ce475 6083
confucius-commons ffbe5331df105c4a95ee2f0b95a4eeb6df6a9caa 3341
jol eea9f9d77e837075e0e237f061a7716e05237408 7204
pdt ed9fe5920966ceb5cd9242263bb6a1eff9147afc 275896
deptective e5bd0f1dcc9dc23c1b3175615049e6e30b093d46 2730
cms-admin-end 40689458c9cce66818636be5effc47213098b960 8229
cli-spring-boot-scaffold 780ad4c90efae4d27e4faf1884ebfd5fe6541944 2425
flyer-maker 5242400cb05a71b87f4bac8b6ace18ef98eb41c3 757
spring-context-support ed713c9079b9944de69f775fba5eb90afa4ee4dc 3061
reddit-bot d98821abcbf9930ecbbd99a4a7634b3c0ca59461 1499
cloud-espm-v2 487798e23a736bda0e12778da1594072fd1f5557 4675
sldeditor 4b33b4e9029402d89335da2bb7d427a39d796b19 103566
missinglink d632aa6d1feeb290b6441dc836c66c9384ea5703 6483
osgi.enroute e3ecd08fd038432fd588d7b41b07cacd54452c35 991
spring4.x-project a023e54cc742e490e2724bf4a979d2864997b22a 576
spring-mvc-angular-js-hibernate-bootstrap-java-single-page-jwt-auth-rest-api-webapp-framework a38cbd855f449ce45470931345d62ee1c9f976d6 2000
spring-boot-graalvm c99075364aa8abb37444cfcd94b9a88f005927c1 48
oauth2-server 078b2138e7e7c7704bc627fbf8fc6c3e740f892b 2977
bitfinex-v2-wss-api-java fda4a7aa96f24f4814c1d5bfa2ca66465de3b549 6412
lombok.maven 12666badea6a45174710a45ce3b7abe0a9d81352 565
client-maven-plugin 76f02d5805c45f357013d2a0cad3f418d8a8c4aa 823
travels-java-api 3a7fd4cc36938666f09ee5945a28345763105075 2953
cargotracker 46424c6d8b708528c7ced6f5cee825601ead73e2 5973
tij4-maven de72e0e12263facb1e226ebdbec5b489785106bc 17890
code-assert a722c20b1541cabc42f08eb4d33fd46e9745da84 7612
aem-component-generator d966ead3891e1d2a2de8aa5130b203837229b875 1648
cloud-opensource-java 4edd644c9453da16cd448e2bbb1b85ac1cf7e168 10509
javaee8-essentials-archetype 9650c1391f49df9f549e142aa501b58374bb2a1b 18
Angular2AndJavaEE 92a87643e97eb72a406a2118d97fe27b958f106c 1424
GetOldTweets-java 9975cd652dad16c7000d0a5fcdbed9e9836b9256 279
Project-16x16 47bd409b8e320c24c5e85d3038518e4d0b5f6d58 5352
slib 21c57a5c52a2d0557fec8d9de7b46252452cdcdc 22107
javaee-javascript f1ea2531a0a28ac55c7993b4c5668ef8fac6d783 348
community 8c68cfde39007f89d3510cdb16c82dcf05a6ff4e 3720
spring-boot-java-swing-reservations 81be071a2d2a7dab57e1ab2850b5ae3a3fb258c5 5299
asmsupport b3933a900c6d51046d402969ce897e5549eea914 26710
projectforge 20d9486426610e172de105b379844ee3340f4ea2 122849
test-driven-spring-boot 2b947d9826f1bfda0cad5035fc29b5ed85f70358 1073
Deeplearning4J eea1cf062af827b9ee7a6a655e00e4ea78d73a51 706
java 4c8192a7fa28c3aeeb93301e5608d2d4ec7e5b38 367
spring-zeebe 9e9d6bd41074aa669a86a88f8276558104849067 1583
triava 049484fa865691a7e27db4de7a57aed98c0654d9 5916
qtiworks 2d8c502d8f2b266fd80197ad19bcae3d4566276a 51636

Comparison Results

Quality of Warnings

We evaluate Codegex (C) and SpotBugs (S) on 52 open-source Java projects in GitHub. We measure the quality of the warnings generated by each tool. Relative accuracy and recall are two widely used metrics to compare the quality of analysis results, whereas Jaccard index (J(S, C)) is used to measure the similarity for two sets of data (between S and C).

The high Jaccard index between the warnings generated by SpotBugs and those generated by Codegex (0.86) indicates that the analysis results of Codegex are comparable to that of SpotBugs. As highlighted in Table 5, Codegex outperforms SpotBugs in accuracy and recall for seven patterns. Moreover, Codegex also achieved comparable results with SpotBugs in the overall accuracy and recall. In Table 5, we also observe that: (1) for most bug patterns, Codegex can find one additional TP than SpotBugs, and (2) Codegex performs particularly well for the DMI_RANDOM_USED_ONLY_ONCE pattern by finding more TPs and fewer FNs.

Analysis Time

Codegex can run up to 24k faster than SpotBugs when considering initial compilation time and analysis time. For generating analysis report, Codegex can run up to 590X faster.