Q (tldr;):如何使用JavaScanner
inandroid-lint
检查以特定字符串作为参数的特定函数调用是否被 try/catch 块包围。
详细信息:我已经完成了官网的android-lint教程,并浏览了现有的lint-checks
. 但是,我似乎无法掌握这种基于 AST 的 JavaScanner 解析的工作流程。我想要实现的是捕获一个设置特定属性的函数并用 try/catch 块包围它。例如:
MyPropertySettings.set("SOME_PROPERTY", "SOME_VAL");
不应触发 lint 规则,但:
MyPropertySettings.set("SOME_SENSITIVE_PROPERTY", "SOME_VAL");
应该是因为它没有被带有SetPropertyException
. 我不想将 try/catch 引入函数本身,因为它只在极少数情况下抛出异常(并且函数的内部结构基于一些反射 mojo)。
对于这个问题,即使是工作流程/提示也可以。如果我能掌握最初的几个步骤,我可能会更好地掌握它。
更新:
经过更多研究,我发现我需要设置set
上面的函数,getApplicableMethodNames()
然后以某种方式读取该函数的属性以确定检查是否适用。那部分应该很容易。
围绕 try/catch 会更加困难,我认为我需要做一些“流分析”。现在问题怎么样了。