Download Ground Truth Dataset

Ground Truth Dataset.xlsx

Sensor Introduction

Java projects are often built on top of various third-party libraries. If multiple versions of a library exist on the classpath, JVM will only load one version and shadow the others, which we refer to as dependency conflicts. This would give rise to semantic conflict (SC) issues, if the library APIs referenced by a project have identical method signatures but inconsistent semantics across the loaded and shadowed versions of libraries. SC issues are difficult for developers to diagnose in practice, since understanding them typically requires domain knowledge. Although adapting the existing test generation technique for dependency conflict issues, Riddle, to detect SC issues is feasible, its effectiveness is greatly compromised. This is mainly because Riddle randomly generates test inputs, while the SC issues typically require specific arguments in the tests to be exposed. To address that, we conducted an empirical study of 316 real SC issues to understand the characteristics of such specific arguments in the test cases that can capture the SC issues. Inspired by our empirical findings, we propose an automated testing technique Sensor, which synthesizes test cases using ingredients from the project under test to trigger inconsistent behaviors of the APIs with the same signatures in conflicting library versions. Our evaluation results show that Sensor is effective and useful: it achieved a Precision of 0.898 and a Recall of 0.725 on open-source projects and a Precision of 0.821 on industrial projects; it detected 306 semantic conflict issues in 50 projects, 70.4% of which had been confirmed as real bugs, and 84.2% of the confirmed issues have been fixed quickly.

Assessment Report of Sensor

Assessment report.pdf

The SC issues reported by Sensor

ID Project Star Issue report ID #SC issue Status
1 Htm.java 296 #550 1 Pending
2 EasyTransaction 2k #144 1 Pending
3 Apache/Reef 92 #1489 1 Fixed
4 Hydra 83 #364 1 Confirmed
5 Motan 5.4k #800 15 Fixed
6 Motan 5.4k #809 15 Fixed
7 Netty-rest 89 #8 12 Fixed
8 Netty-rest 89 #9 9 Fixed
9 Ff4j 701 #336 10 Fixed
10 Aws-sdk-java 3.2k #1897 1 False positive
11 Retrofit 34.8k #3018 12 Fixed
12 Guagua 72 #103 19 Fixed
13 Jss7 104 #309 1 Pending
14 Product-iots 120 #1911 1 Pending
15 Atom-hopper 58 #301 1 Fixed
16 Quick-media 441 #41 1 Fixed
17 Ontop 325 #287 12 Fixed
18 Ontop 325 #288 17 Fixed
19 Odo 141 #173 1 Fixed
20 Java-design-patterns 55.2k #868 1 Fixed
21 Hmily 2.7k #86 1 Fixed
22 Ninja 1.9k #654 1 Fixed
23 Restx 434 #297 3 Fixed
24 Openstack-java-sdk 177 #214 1 Fixed
25 Javacpp 3k #295 1 False positive
26 MiA 342 #11 1 Confirmed
27 Vertx-examples 2.6k #335 1 Confirmed
28 Vertx-examples 2.6k #336 1 Confirmed
29 Rest-assured 4.5k #1143 1 Fixed
30 Yawp 137 #121 1 Fixed
31 Apache/Hive 3k #21374 1 Fixed
32 Weixin-java-demo-springmvc 333 #17 3 Fixed
33 Nutzboot 342 #199 2 Fixed
34 FastjsonExploit 336 #6 1 Fixed
35 metrics-cloudwatch 23 #4 1 Pending
36 Sentinel 13.7k #1730 1 Fixed
37 SmartIM 131 #12 11 Fixed
38 KafkaExample 116 #2 5 Pending
39 querydsl 3k #2647 18 Fixed
40 DataLink 655 #52 10 Pending
41 Confluent-Kafka-Certification 72 #5 4 Pending
42 yql-plus 32 #119 29 Fixed
43 jprotobuf 633 #141 4 Fixed
44 freedomotic 339 #490 1 Fixed
45 reactive-grpc 537 #226 4 Fixed
46 hangout 461 #163 5 Fixed
47 xenqtt 23 #4 9 Pending
48 distributed-redis-tool 565 #24 21 Pending
49 webmagic 9.3k #951 10 Pending
50 kafka-avro-course 102 #8 4 Pending
51 netbout 37 #1159 1 Confirmed
52 qconfig 181 #17 5 Pending
53 database 518 #180 11 Confirmed
54 halo-dal 84 #8 1 Pending