返回
COSTAR: Software Code Smell Detection Through Tree-Based Abstract Representation
DOI:10.1109/TR.2025.3648404.png)
摘要
En 中文
代码异味是会增加软件维护成本且难以手动检测的次优代码结构。研究人员已探索使用机器学习(ML)方法进行自动代码异味检测,这些方法严重依赖静态代码度量或源代码表示。静态代码度量通常依赖结构属性,如代码行数、圈复杂度或注释密度。然而,这些度量并不总能反映真实的代码复杂度,且仅提供定量见解,无法内在地检测不良编码实践。相比之下,抽象语法树(AST)等表示形式则关注代码的结构和语法元素,捕捉源代码中的层次关系和上下文关系。这有助于精确识别循环、函数调用和条件语句等代码结构,这些结构对于检测代码异味至关重要。本文介绍了基于树的抽象表示代码异味检测(COSTAR),这是一种使用AST来唯一表示每个源代码实例的源代码表示技术。COSTAR通过提取AST中从根到各个节点的所有路径来捕捉源代码的层次结构。通过采用预训练的Transformer双向编码器表示模型(BERT),COSTAR为每条提取的路径生成向量。随后计算这些向量的均值,得到精确且全面的源代码表示。在四个基准MLCQ代码异味数据集(数据类、上帝类(Blob)、特性嫉妒和长方法)上,采用多种ML技术进行了广泛实验以验证COSTAR的性能。采用了多种性能指标来评估模型表现。实验结果表明,与现有方法相比,COSTAR提升了代码异味检测模型的性能,F1分数的改进幅度从0.03(长方法)到0.19(特性嫉妒)不等。此外,COSTAR与最先进方法的比较表明,其在代码异味检测方面优于Code2Vec和CuBERT等方法。
Keyword:
Code smell prediction
empirical study
imbalance learning
software maintainability
source code representation
期刊
IF:
5.7
论文数:
2.7K
被引数:
8.5K
机构
引用论文
Can LLM Replace Stack Overflow? A Study on Robustness and Reliability of Large Language Model Code Generation大型语言模型代码生成的鲁棒性与可靠性研究:LLM能否取代Stack Overflow?
Comparing and experimenting machine learning techniques for code smell detection比较和实验用于代码气味检测的机器学习技术

