Finding code clones in the open source systems is important for efficient and safe reuse of existing open source software. In this paper, we propose a novel search model, open code clone search, to explore code clones in open source repositories on the Internet. Based on this search model, we have designed and implemented a prototype system named OpenCCFinder. This system takes a query code fragment as its input, and returns the code fragments containing the code clones with the query. It utilizes publicly available code search engines as external resources. Using OpenCCFinder, we have conducted several case studies for Java code. These case studies show the applicability of our system.
Debugging failing test cases, particularly the search for failure causes, is often a laborious and timeconsuming activity. With the help of spectrum-based fault localization developers are able to reduce the potentially large search space by detecting anomalies in tested program entities. However, such anomalies do not necessarily indicate defects and so developers still have to analyze numerous candidates one by one until they find the failure cause. This procedure is inefficient since it does not take into account how suspicious entities relate to each other, whether another developer is better qualified for debugging this failure, or how erroneous behavior comes to be. We present test-driven fault navigation as an interconnected debugging guide that integrates spectrumbased anomalies and failure causes. By analyzing failure-reproducing test cases, we reveal suspicious system parts, developers most qualified for addressing localized faults, and erroneous behavior in the execution history. The Paths tool suite realizes our approach: PathMap supports a breadth first search for narrowing down failure causes and recommends developers for help; PathFinder is a lightweight back-in-time debugger that classifies failing test behavior for easily following infection chains back to defects. The evaluation of our approach illustrates the improvements for debugging test cases, the high accuracy of recommended developers, and the fast response times of our corresponding tool suite.
In object-oriented programs, access modifiers are used to control the accessibility of fields and methods from other objects. Choosing appropriate access modifiers is one of the key factors for easily maintainable programming. In this paper, we propose a novel analysis method named Accessibility Excessiveness (AE) for each field and method in Java program, which is discrepancy between the access modifier declaration and its real usage. We have developed an AE analyzer - ModiChecker which analyzes each field or method of the input Java programs, and reports the excessiveness. We have applied ModiChecker to various Java programs, including several OSS, and have found that this tool is very useful to detect fields and methods with the excessive access modifiers.
This paper proposes a monitoring method for information retrieval from the sources in large-scale networks, which tries to achieve the maximum gain of user utility with the minimum source observation cost. Generally, information accumulated in a network is being updated every second and the contents which have been downloaded by network users become obsolete as time passes. User utility, which is obtained by the users when they get their target information successfully, declines with the elapsed time from the instant of placing a retrieval request or the content's renewal. Accordingly, the proposed monitoring method adjusts its observation intervals according to the information sources' update intervals considering user utility decrease and monitoring cost caused by the observation of sources. The usefulness of the proposal is confirmed by computer simulations, which illustrate that it is effective especially in the condition that the expense of the observations is neither extremely emphasized nor neglected. In addition, a prototype of the monitoring system which implemented the proposal is developed and some monitoring experiments in the real Internet environment are conducted. The results show that the proposed method seems to be available in the case where the conditions are close to those of the simulations.