Abstract
One common issue in reusing an existing library is that there is often a requirement to write a full link application that can instantiate a required destination class type according to an object of a given source class type. Recently, various code suggestion methods have been proposed to help programmers to address this issue by striving to recommend much more (good recall) and correct (good precision) solutions. However, for most of current methods, it is very difficult to balance the recall ratio and precision. Thus, a practical code suggestion method is expected to make trade-off between these two terms. In this study, a novel graph-search algorithm for efficient code suggestion is introduced to address the above issue. Our method obtain better experimental effect compared to the most related studies.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
To avoid the flood of downcast, the method invoking sequences that contain downcast with small frequency will not recommended to users by our system. In the future work, the strategy to handle downcast codes proposed in the paper of [3] can be used to refine the DQA graph.
- 2.
RPT is a inverted index table which is used to store the optQoS for each input/precondition and its optimal provider.
References
Bajracharya, S., Ossher, J., Lopes, C.: Sourcerer: an infrastructure for large-scale collection and analysis of open-source code. Sci. Comput. Program. 79(79), 241–259 (2014)
Bruch, M., Schäfer, T., Mezini, M.: FrUiT: IDE support for framework understanding. In: Proceedings of the 2006 OOPSLA Workshop on Eclipse Technology eXchange. pp. 55–59. Eclipse 2006. ACM, New York (2006). https://doi.org/10.1145/1188835.1188847
Feng, Y., Martins, R., Wang, Y., Dillig, I., Reps, T.W.: Component-based synthesis for complex APIs. In: ACM SIGPLAN Symposium on Principles of Programming Languages, pp. 599–612 (2017)
Fowkes, J., Chanthirasegaran, P., Ranca, R., Allamanis, M., Lapata, M., Sutton, C.: TASSAL: autofolding for source code summarization. In: IEEE/ACM International Conference on Software Engineering Companion, pp. 649–652 (2017)
Henderson, T.A.D., Podgurski, A.: Sampling code clones from program dependence graphs with GRAPLE. In: International Workshop on Software Analytics, pp. 47–53 (2016)
Maalej, W., Tiarks, R., Roehm, T., Koschke, R.: On the comprehension of program comprehension. ACM Trans. Softw. Eng. Methodol. 23(4), 1–37 (2014)
Matsumoto, Y.: A software factory: an overall approach to software production. In: Software Reusability, pp. 155–178. IEEE Computer Society, March 1987
Mojica, I.J., Adams, B., Nagappan, M., Dienst, S., Berger, T., Hassan, A.E.: A large-scale empirical study on software reuse in mobile apps. IEEE Softw. 31(2), 78–86 (2014)
Nguyen, A.T., Nguyen, T.N.: Graph-based statistical language model for code. In: IEEE/ACM IEEE International Conference on Software Engineering, pp. 858–868 (2015)
Nguyen, A.T., Nguyen, T.D., Phan, H.D., Nguyen, T.N.: A deep neural network language model with contexts for source code. In: IEEE International Conference on Software Analysis, Evolution and Reengineering, pp. 323–334 (2018)
Nguyen, H.A., Dyer, R., Nguyen, T.N., Rajan, H.: Mining preconditions of APIs in large-scale code corpus. In: ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 166–177 (2014)
Nguyen, T., Nguyen, H., Pham, N., Al-Kofahi, J., Nguyen, T.: Graph-based mining of multiple object usage patterns. In: Proceedings of the the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering. ESEC-FSE 2009, pp. 383–392. ACM (2009)
Osera, P.M., Zdancewic, S.: Type-and-example-directed program synthesis. In: ACM SIGPLAN Notices, vol. 50, no. 6, pp. 619–630 (2015)
Saul, Z., Filkov, V., Devanbu, P., Bird, C.: Recommending random walks. In: Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering, pp. 15–24. ACM (2007)
Sirres, R., et al.: Augmenting and structuring user queries to support efficient free-form code search. Empir. Softw. Eng. 1, 1–33 (2017)
Uddin, G., Dagenais, B., Robillard, M.: Analyzing temporal API usage patterns. In: 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 456–459. IEEE (2011)
Ye, Y.: Supporting component-based software development with active component repository systems. Ph.D. thesis, University of Colorado (2001)
Acknowledgment
The work is financially supported in part by the Project of Science and Technology of State Grid (No. SG[2017]179), Natural Science Foundation of Shandong Province, China (ZR2016FB13), National Natural Science Foundation of China (61602286) and a Project of Shandong Province Higher Educational Science and Technology Program (J16LN09).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Singapore Pte Ltd.
About this paper
Cite this paper
Zhang, H. et al. (2019). An Efficient Graph-Search Algorithm for Full Link Application Suggestion. In: Sun, Y., Lu, T., Xie, X., Gao, L., Fan, H. (eds) Computer Supported Cooperative Work and Social Computing. ChineseCSCW 2018. Communications in Computer and Information Science, vol 917. Springer, Singapore. https://doi.org/10.1007/978-981-13-3044-5_41
Download citation
DOI: https://doi.org/10.1007/978-981-13-3044-5_41
Published:
Publisher Name: Springer, Singapore
Print ISBN: 978-981-13-3043-8
Online ISBN: 978-981-13-3044-5
eBook Packages: Computer ScienceComputer Science (R0)