上篇博客《Android自定义Lint实践》中我们介绍了美团App如何使用自定义Lint进行代码检查。在使用Lint的过程中,我们陆续又发现原生Lint的一些问题和缺陷,本文将介绍我们在实践中提出的解决方案。完善JDK 7泛型新写法下的HashMap检测上一篇博客中我们提到了对于HashMap检测的改进,但当时我们也在文章中提到:代码很简单,总体就是获取变量定义的地方,将泛型值传入原先的检测逻辑。当然这里的增强也是有局限的,比如这个变量是成员变量,向前的推断就会有问题,这点我们还在持续的优化中。即:当时的检测解决了变量声明和变量赋值在一起的HashMap检测问题。但对于两者不在一起的情况,我们仍然无法检测到。示例代码如下:publicstaticvoidtestHashMap(){//这种情况可以用上篇博客的检查搞定Mapmap1 =newHashMap();
map1.put(1,"name");//这种找不到map2的变量声明,所以用上篇博客的检查是无法判断的map2 =newHashMap();
map2.put(2,"name2");
}通过我们的探索,目前已经解决了这个问题。下面我们来详细介绍下:我们需要解决的情况在同一个类中publicMapmap;publicstaticMapmap2;publicvoidtest(){// 1: 成员变量map =n
...
继续阅读
(103)