Tag: lint

针对构造函数中注入次数的Lint规则

我试图在我的Android代码中创建一个Lint规则,检查构造函数中是否注入数字,所以如果我为视图模型超过了某个数字,例如,我将引发一个lint警告。 我知道我必须在我的Lint探测器中实施一个UastScanner,但是我迷路了,因为我找不到好的文档。 还有别人做过这样的事吗? 或者我可以在哪里find好的文档? 谢谢!

android gradle增量lint

因为我会在Android的增量Lint检查工作,我看了一些文章,我发现我可以在build.gradle中添加一个任务,然后通过重写LintGradleClient传递一些参数,应该按照文章中的描述工作,但是我按照文中所描述的,在增加了LintGradle参数的情况下,AndroidProject无法得到,我用kotlin实现了。有人可以帮我吗? 这里是文章的URL路径https://www.jianshu.com/p/4833a79e9396 我的代码获取AndroidProject作为Kotlin: fun getAndroidProject(): AndroidProject{ var gradleConn = GradleConnector.newConnector() gradleConn.forProjectDirectory(getProject().getProjectDir()) var modelProject = gradleConn.connect().getModel(com.android.builder.model.AndroidProject::class.java) return modelProject } 我执行任务,它告诉我这样的: 在这个版本中没有可用的“AndroidProject”types的模型。

kapt2和butterknife产生lint错误:预期的idtypes的资源

更新到kotlin 1.0.4和kapt2时,出现以下lint错误: ../generated/source/kapt2/withMapsWithAnalyticsForPlayRelease/org/ligi/passandroid/ui/pass_view_holder/EditViewHolder_ViewBinding.java:20: Expected resource of type id 17 super(target, source); 18 19 View view; 20 view = Utils.findRequiredView(source, 2131624091, “method ‘onNavigateClick'”); 21 view2131624091 = view; 22 view.setOnClickListener(new DebouncingOnClickListener() { ../generated/source/kapt2/withMapsWithAnalyticsForPlayRelease/org/ligi/passandroid/ui/pass_view_holder/EditViewHolder_ViewBinding.java:28: Expected resource of type id 25 target.onNavigateClick(); 26 } 27 }); 28 view = Utils.findRequiredView(source, 2131624092, “method ‘onCalendarClick'”); 29 view2131624092 = view; 30 view.setOnClickListener(new […]

如何根据自定义规则验证源代码? (代码中没有“DANGER”字符串)

在编写调试语句时,我总是添加// DANGER注释,我知道我必须在构建Android应用程序的下一个版本之前将其删除。 因此,在构建每个版本之前,我手动执行CTRL + SHIFT + F搜索"DANGER" ,并确保没有调试语句仍然存在。 我可能会忘记这一点,所以我想自动化这最后一部分:发布版本应该简单地失败(最好是立即),如果代码包含"DANGER" 。 什么是最简单的方法来实现呢? 自定义的皮棉规则? 自定义gradle任务?

可能在Lint中的错误

我试图做一个自定义的皮棉,我基本上工作,但报告失败时,我试图报告一个PsiElement: private void checkClassAnnotations(JavaContext context, PsiClass psiClass, UCallExpression node) { for (PsiField psiField : uClass.getAllFields()) { PsiAnnotation[] allAnnotations = context.getEvaluator().getAllAnnotations(psiField, true); Set<String> annotations = new HashSet<>(); for (PsiAnnotation allAnnotation : allAnnotations) { annotations.add(allAnnotation.getQualifiedName()); } if (!annotations.contains("com.google.gson.annotations.SerializedName")) { context.report(ISSUE, context.getLocation(psiField), "The field \"" + psiField.getName() + "\" is not annotated with SerializedName: **Not annotated**"); } } […]

在Android lint检查LinkedHashMap.remove()的错误肯定

在lint中的问题导致html 由lint生成html部分的问题 <div class="warningslist"> <span class="location"> <a href="../../src/main/java/com/tourlandish/chronos/base/InMemoryCache.kt">../../src/main/java/com/tourlandish/chronos/base/InMemoryCache.kt</a>:40</span> : <span class="message">Call requires API level 24 (current min is 21): <code>java.util.LinkedHashMap#remove</code></span><br /><pre class="errorlines"> <span class="lineno"> 37 </span> override <span class="keyword">fun</span> get(key: String): CachedItem? { <span class="lineno"> 38 </span> <span class="keyword">val</span> value = <span class="keyword">super</span>.get(key) ?: <span class="keyword">return</span> <span class="keyword">null</span> <span class="lineno"> 39 </span> <span class="keyword">if</span> (value.isExpired()) […]