正则表达式很快变得太复杂(对我来说)难以理解。即使是像这样简单的事情[ab][cd]
,有几个逻辑分支。我的目标是提高代码库的可维护性,因此这些问题的答案可以帮助我们检测和修复复杂的代码:
- 是否有计算复杂度指标(类似于圈复杂度)包括
正则表达式固有的复杂性?
- 有没有什么工具
产生正则表达式的复杂度?
- 是否有可以建议简化正则表达式的工具?
您可以尝试使用正则表达式的编译形式,并尝试将一些代码复杂性指标映射到该形式,例如代码行数或圈复杂度。要明白我的意思,请查看以下 stackoverflow 答案:https://stackoverflow.com/a/2348725/5747415 https://stackoverflow.com/a/2348725/5747415,它展示了如何使用 perl 访问正则表达式的编译形式。另一个例子如下所示:http://perldoc.perl.org/perldebguts.html#Debugging-Regular-Expressions http://perldoc.perl.org/perldebguts.html#Debugging-Regular-Expressions,引用该页面的工具输出:
Compiling REx '[bc]d(ef*g)+h[ij]k$'
1: ANYOF[bc](12)
12: EXACT <d>(14)
14: CURLYX[0] {1,32767}(28)
16: OPEN1(18)
18: EXACT <e>(20)
20: STAR(23)
21: EXACT <f>(0)
23: EXACT <g>(25)
25: CLOSE1(27)
27: WHILEM[1/1](0)
28: NOTHING(29)
29: EXACT <h>(31)
31: ANYOF[ij](42)
42: EXACT <k>(44)
44: EOL(45)
45: END(0)
顺便说一句,我祝贺您做出提高代码可维护性的决定。也就是说,我只是想表达我的怀疑,任何正式的指标都可以提供比(甚至可以接近)经验丰富的开发人员的判断更好的指导......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)