一次繁杂问题的解决过程

来源:互联网 发布:it投标书 编辑:程序博客网 时间:2024/04/30 20:54

起因:

刚入职新公司,接了一个小任务,说来简单,就是把项目里现在所有的埋点任务过滤一遍,以新发给我的一个Excel表格数据为准,没有在表格里出现的埋点key就删除掉。当我接到这个任务的时候,内心其实是有一点抗拒的,毕竟是毫无技术含量低工作,而且项目中那么多文件我总不能一个个文件一行行代码找吧?!幸好我被告知项目中所有埋点功能都是通过一个Log类中的add方法来实现的,那样我只要查找项目中调用了这两个方法的地方改就可以了。

过程:

熟知快捷键低我激动的做起来,首先先创建了一个分支,然后command+shift+R输入了关键字之后,让我的心又沉了下去。。。因为项目中调用使用埋点的地方一共有300多处,如果我一个个查找-复制key-到excel里查找-删除代码这一个套路下来,怎么也得两三天才能完成吧,这还不是问题所在,问题的关键在于。。我。。太。。懒。。了。。。程序员就是懒啊!

那怎么办?忘了是谁说过,对于程序员来说,所有机械性操作的问题,都不应该成为你的问题(我自己杜撰的),能不能写个脚本之类的,自动触发AS的查找快捷键,然后自动和excel进行比较呢?这个念头刚一出现就被我打消了,研究操作AS快捷键的脚本的这个调研过程+学习时间,也许一两天就过去了。那怎么办?

突然想到,为什么我一定要通过AS的快捷键来查找代码?我在文件里一个个查找不可以吗?这样我就可以通过代码来实现了。。思路应该谁正确的,话不多说,赶紧开始编码~

解决:

第一步,读取app项目下的java文件,然后一行行读取代码,发现包含Log的就读取其中的key,然后记录到一个set里(这样可以自动排重)

关键代码如下:

    */ public void getCodeCount(String content) {      Matcher matcher = pattern.matcher(content); content = matcher.replaceAll(" "); String ss[] = content.split("\n"); for (String s : ss) {         if (s.trim().length() > 0 && !s.trim().startsWith("//")){// if (s.contains("TraceLog.add(\"")){               s = s.trim(); int firstIdx = s.indexOf("\"")+1; int lastIdx = s.indexOf("\"",firstIdx); String key = s.substring(firstIdx , lastIdx);                  keyList.add(key);            }         }      }   }

第二步,读取excel里的key内容,保持到一个list里,

主要代码如下:

public static List readExcel(String filePath,int cellIdx){   List<String> keyList = new ArrayList<>(400); Workbook book = null; try {      book = getExcelWorkbook(filePath); Sheet sheet = getSheetByNum(book,1); System.out.println("sheet名称是:"+sheet.getSheetName()); int lastRowNum = sheet.getLastRowNum(); System.out.println("行数:"+lastRowNum); System.out.println("*********excel里的key如下**************"); Row row = null; for(int i=1;i<=lastRowNum;i++){         row = sheet.getRow(i); if(row != null){            String v = row.getCell(cellIdx).getStringCellValue(); keyList.add(v); }      }   } catch (Exception e) {      e.printStackTrace(); }   return keyList;}

第三步,两个集合差集,最后得到不在excel里的key共有25个。

以上是我这次任务的解决过程,如果大家有更好的方法,也请多多指教。

0 0
原创粉丝点击