แนวคิดหลัก
Java反编译的主要目的是提高代码理解,因此反编译代码的可读性非常重要。然而,之前的研究主要集中在反编译的正确性,而忽视了反编译代码的可读性。
บทคัดย่อ
本研究首次对Java反编译代码的可读性进行了实证研究。研究包括以下几个方面:
通过用户调查,发现Java开发者和研究人员认为反编译代码的可读性与正确性同等重要,反编译代码的可读性问题比反编译失败更常见。
通过实验比较了14个Java项目的源代码和3种著名Java反编译器生成的反编译代码,发现有相当大比例的反编译代码在可读性上显著低于或高于原始源代码。
发现认知复杂度指标在识别这些可读性差异方面具有较好的精确度但较低的召回率。而困惑度指标在识别这些可读性差异方面的精确度和召回率都较低。
通过分析,总结出6种在实际Java项目中常见且容易使现有指标难以识别可读性差异的代码模式。基于这6种模式,提出了一种新的基于认知复杂度的指标,用于评估反编译代码的可读性,并验证其有效性。
สถิติ
在我们的用户调查中,97%的受访者认为反编译代码的正确性很重要(得分大于5分),94%的受访者认为反编译代码的可读性很重要(得分大于5分)。
在我们的实验中,93.6%的反编译代码的可读性低于或等同于其原始源代码,21%的反编译代码的可读性显著低于源代码。
คำพูด
"反编译代码的可读性与正确性同等重要。"
"反编译代码的可读性问题比反编译失败更常见。"