java 局部变量 private_java – 未使用的私有方法,私有字段和局部变量

我们正在使用Sonar来审核我们的代码库.对于未使用的私有方法,未使用的私有字段和未使用的本地变量,几乎没有违规.

根据我的理解,私有方法和私有字段只能通过反射和Java Native Interface在类外部访问.我们在代码库中没有使用JNI,而是在某些地方使用反射.

所以我们计划的是对这些方法和字段进行完整的工作区搜索,如果这些方法和字段在任何地方都没有使用,那么这些将被注释掉.再次通过反射访问私有方法和字段的机会非常少.这是为了更安全的一面.

无法在方法之外访问未使用的局部变量.所以我们可以评论出这些.

你对此有什么其他建议吗?

解决方法:

我喜欢自己反思,但用几句话说:它可能是一场噩梦.将java反射保持在一个非常可控的(即无状态,无全局/外部变量用法)和最小范围.

要找什么?

Field privateNameField = Person.class.getDeclaredField("name");

privateNameField.setAccessible(true);

Method privatePersonMethod = Person.class.getDeclaredMethod("personMeth", null);

privatePersonMethod.setAccessible(true);

所以,setAccessible()会让你有些冒烟,但getDeclaredField()和getDeclaredMethod()实际上是访问字段的地方(真正引起火灾的地方).

要特别注意它们中使用的值,特别是如果它们是变量(它们可能是变量),因为它们决定了所访问的字段.

做纯文本搜索

此外,在整个项目文件夹中对字段/方法名称进行纯文本搜索非常有用.我会说,如果你不确定,在进行全文搜索之前不要删除.

如果你还有很多其他依赖于这个项目的项目你正试图改变;如果你不是(或者不知道)种植那些(炸弹)的人,我会放手.只有真正需要改变才会改变.当您需要对其周围的代码进行更改时,最好的方法是逐个获取它们.

啊,如果你有它们,运行代码覆盖率的测试也可以帮助你发现未使用的代码.

标签:java,sonarqube

来源: https://codeday.me/bug/20190625/1284387.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值