Android Studio工具篇FindBugs

FindBugs是什么

FindBugs 是一个查找代码潜在错误的工具.

FindBugs-IDEA 工具使用

扫描区域

  • Analyze Current file: 仅扫描当前文件
  • Analyze Class (non-anonymous): 扫描所有类(非匿名内部类)
  • Under Cursor: 扫描光标下所有的源文件
  • Analyze Package(s) files: 扫描整个包名下的所有文件
  • Analyze Module files:扫描整个模块
  • Analyze Package files 扫描
  • Analyze Scope files

BUG分类策略

  • 按BUG策略分组
  • 按BUG出现在哪里类进行分组
  • 按BUG出现在哪个Package上进行分组
  • 按BUG的严重等级进行分组

过滤FindBugs中的检测内容

FindBugs就像是一个有严重的洁癖患者,它会检测你代码上所有不规范的内容.如果你让它按照默认的规则检测你的项目,那么检测结果会让你严重怀疑人生.
设置一些检测过滤条件你好我也好.

FindBugs过滤器语法

FindBugs的过滤器是以XML的形式存在:

  • FindBugsFilter:根节点名称.它可能包含多个Match节点作为子元素,根据Match节点的正则表达式内容,Match节点可以是包含错误实例,也可能是筛选错误实例,

Match节点的属性参数支持

  • 该元素可以匹配特定的Bug模式,细粒度匹配可以使用code属性.对于大都是粗粒度匹配,使用category.

category属性存在以下枚举类型:
CORRECTNESS(正确性), MT_CORRECTNESS, BAD_PRACTICICE(不好的做法), PERFORMANCE(性能问题), STYLE(书写风格).
code 代号:
您可以在这里http://findbugs.sourceforge.net/bugDescriptions.html找到相关的code 代号

  
      
      
      
   
  
       
  
  • (配置Match的可信度警告)
    该属性用于配置Match的可信度

value值必须是整型 高可信度(1),正常可信度(2),低可信度(3),另在2.0版本中,已完全替代Priority属性的功能.

    
    
      
      
      
      
    

  • 我们在检测潜在BUG时,可能有些BUG是我们非常关心的,有些可能是不痛不痒的小问题,Rank给我们提供了为这些告警提供分类的支持.

Rank 的value取值区间在[1,20],其中[1,4]最严重 [5,9],[10,14] [15,20]依次递减.
使用方法跟 一样,这里就不举例了.


  • 检测name指定的包名下的类文件,但是不包括使用了import name(包名)的类.当然使用正则表达式可以轻松实现匹配多个包.
    
    
    
      
      
    
    
    
      
      
    
    
    
      
      
    

  • 此元素匹配与特定类相关的警告,name属性用于指定类名称的精确匹配模式或正则表达式匹配模式.

如果Match元素既不包含Class元素也不包含class / classregex属性,则该检测策略将应用于所有类.这样的检测策略很可能会匹配更多的错误实例,除非用适当的方法或字段进一步细化。


  • 此元素匹配与特定源文件关联的警告。 name属性用于指定源文件名的精确或正则表达式匹配模式。



    
    



  • 这个元素指定一个方法,该name用于指定精确指定或者正则表达式匹配方法名称.params属性是方法参数类型(多个参数以逗号分隔),returns属性是方法的返回类型.role属性是方法角色.在params和returns,类名必须完全限定名。 (例如,“java.lang.String”而不是“String”。)如果指定了其中一个属性,

您可以只提供name属性||name及params属性 或者name/params/returns属性全部三者全部提供,这样你可以精确匹配方法签名。

    
    
      
      
    
    
    
      
      
    

  • 指定一个字段,name属性用于精确指定或者正则表达式匹配字段名称, 您还可以根据其签名使用type属性来过滤字段以指定字段的完全限定类型,当然您也可以指定其中一个或两个属性,以便执行基于名称/签名的匹配。
    
    
      
      
    

  • 局部变量是方法中定义的变量,这个元素指定一个局部变量。name属性用于精确指定或者正则表达式匹配局部变量。


  • 该元素将Match子句作为分离符组合,也就是说,您可以将两个Method元素放在Or子句中以匹配任一方法。

     
     
       
       
         
         
         
       
       
     

  • 这个元素结合了Match子句,只有当两个Match语句同时满足时才集合才有效.


  • 这个元素颠倒了包含的Match子对象。 也就是说你可以在一个Not子句中加入一个Bug元素来匹配除了给定的bug之外的任何bug。

     
     
      
      
          
      
     

注意:如果Class,Source,Method或Field的name属性以〜字符开头,则表示该name属性采用正则表达式匹配.

参考链接:FindBugs™ Manual http://findbugs.sourceforge.net/manual/index.html

你可能感兴趣的:(Android Studio工具篇FindBugs)