Clustering, breaking a large system into multiple clusters is commonly used technique to scale static analysis tools to large systems. Sound static analysis of resulted clusters requires conservative approach for the inter-cluster communication implemented through shared variables. We observe, this approach adds to the large number of warnings generated due to imprecision of static analysis. Further, manual reviewing of warnings generated due to shared variables takes much more effort as compared to effort required in reviewing of the other class of warnings. This paper aims to assist reviewing of such warnings impacted by the shared variables so that reviewing effort is reduced. This is achieved by identification and reporting of suitable information about the impacting shared variables. The reported information includes -1) marked warnings affected due to shared variables, 2) shared variables present in the code (such as warning point, and code slice) traversed while reviewing a warning, 3) intelligently selected write-points of the involved shared variables, depending on the type of warning, and 4) characteristics of the shared variables extracted from the code, that could potentially help to reduce the efforts further. Our experiments on two embedded systems indicated that the review assisting information presented to the user is quite effective to improve reviewing of warnings affected due to shared variables. The overall reduction in manual efforts varied from 45-70% depending on code size and complexity, type of warnings, reviewer skills, tool support used, etc.
I. MOTIVATIONStatic analysis tools have showcased their usefulness in software quality assurance by detecting defects early in the software development life cycle [1]. However, these tools face scalability issue on many real world systems [2]. Clustering [3], breaking a large system into multiple clusters is commonly used technique to scale these tools to large systems. A cluster thus formed represents a system functionality or designated task that is implemented independently of or in communication with other system functionalities. Each generated cluster being smaller and less complex than the original system can be analyzed using the static analysis tools. The clusters of a system can be user provided entry functions, or automatically identified (uncalled functions), or mixture of the both.Sound static analysis of a cluster requires conservative approach for the inter-cluster communication implemented through shared variables, as the cluster is analyzed independently of others. This approach adds to the large number of warnings generated due to imprecision of static analysis. For example, Figure 1 represents two clusters, T ask1 and T ask2 running in parallel, with sharedV ar as the shared variable used to communicate between the two clusters. Due to the usage of sharedV ar as the index, the Array Index Out of Bound (AIOB) warning w1 gets reported for cluster T ask1, since values provided to sharedV ar by T ask2 are not known while analysis of T...