Deep Code Search with Naming-Agnostic Contrastive Multi-View Learning
<|reference_start|>Deep Code Search with Naming-Agnostic Contrastive Multi-View Learning: Software development is a repetitive task, as developers usually reuse or get inspiration from existing implementations. Code search, which refers to the retrieval of relevant code snippets from a codebase according to the developer's intent that has been expressed as a query, has become increasingly important in the software development process. Due to the success of deep learning in various applications, a great number of deep learning based code search approaches have sprung up and achieved promising results. However, developers may not follow the same naming conventions and the same variable may have different variable names in different implementations, bringing a challenge to deep learning based code search methods that rely on explicit variable correspondences to understand source code. To overcome this challenge, we propose a naming-agnostic code search method (NACS) based on contrastive multi-view code representation learning. NACS strips information bound to variable names from Abstract Syntax Tree (AST), the representation of the abstract syntactic structure of source code, and focuses on capturing intrinsic properties solely from AST structures. We use semantic-level and syntax-level augmentation techniques to prepare realistically rational data and adopt contrastive learning to design a graph-view modeling component in NACS to enhance the understanding of code snippets. We further model ASTs in a path view to strengthen the graph-view modeling component through multi-view learning. Extensive experiments show that NACS provides superior code search performance compared to baselines and NACS can be adapted to help existing code search methods overcome the impact of different naming conventions.<|reference_end|>
@article{feng2024deep,
    title={Deep Code Search with Naming-Agnostic Contrastive Multi-View Learning},
    author={Jiadong Feng, Wei Li, Zhao Wei, Yong Xu, Juhong Wang, Hui Li},
    journal={arXiv preprint arXiv:2408.09345},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.09345},
    primaryClass={cs.IR cs.SE}
}