首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏潇涧技术专栏

    Lint Tool Analysis (2)

    Lint工具的源码分析(2) 本系列的几篇源码分析文档意义不大,如果你正好也在研究lint源码,或者你想知道前面自定义lint规则中提出的那几个问题,抑或你只是想大致了解下lint的源码都有些什么内容的话 2. client.api包中的重要类 (1) LintClient类是指调用lint检查的来源(客户端),可能是在Android Studio中或者在gradle中,也可能是在终端通过命令行的形式来调用 当我们在终端输入lint命令的时候,lint脚本会自动帮我们设置com.android.tools.lint.bindir的值,这个我们后面分析lint脚本源码的时候可以看到。 = "Lint-Registry"; //$NON-NLS-1$ private static final String MF_LINT_REGISTRY = "Lint-Registry-v2 )); boolean isLegacy = false; //检查jar包的MANIFEST.MF文件中是否配置了Lint-Registry-v2或者Lint-Registry

    2.6K20发布于 2018-08-01
  • 来自专栏潇涧技术专栏

    Custom Lint in Action

    包括了lint-api、lint-checks、lint-tests三个子目录,分别是lint核心API、自带的lint检查项以及lint测试代码。 2.如何查看目前已经有哪些lint检查项呢? = project.tasks.find {it.name == 'compileLint'} compileLintTask.dependsOn(copyLintJar) } (2)LintDemoApp 2.新建一个Java Library项目,添加依赖compile 'com.android.tools.lint:lint-api:24.5.0',并编写lint规则,然后在build.gradle中配置 7.其他参考资料 1.美团-Android自定义Lint实践 2.segmentfault-自定义Lint规则简介 3.Android Studio配合Lint检测缺失Permission 4.

    1.4K10发布于 2018-08-01
  • 来自专栏逮虾户

    再谈Android Lint

    我之前写的Lint的文章,只从实现层之类的去描述了下如何自定义一个lint扫描规则,但是也没有说清楚什么lint到底是基于什么去写的,这边进一步进行一次补充。 Android Lint ? 在Android Studio 3.0和lint-api 25.4.0版本中,Lint工具将PSI替换为UAST,同时推荐使用新的UastScanner。 在不熟悉API的情况下如何更好的写一个Lint呢? 以我个人的开发经验来看,我会从Android原生提供的Lint规则中去寻找可能适合我的逻辑。 lint了。

    1.9K40发布于 2020-10-15
  • 来自专栏逮虾户

    再谈Android Lint

    我之前写的Lint的文章,只从实现层之类的去描述了下如何自定义一个lint扫描规则,但是也没有说清楚什么lint到底是基于什么去写的,这边进一步进行一次补充。 在Android Studio 2.2和lint-api 25.2.0版本中,Lint工具将Lombok AST替换为PSI,同时弃用JavaScanner,推荐使用JavaPsiScanner。 在Android Studio 3.0和lint-api 25.4.0版本中,Lint工具将PSI替换为UAST,同时推荐使用新的UastScanner。 在不熟悉API的情况下如何更好的写一个Lint呢? 以我个人的开发经验来看,我会从Android原生提供的Lint规则中去寻找可能适合我的逻辑。 lint了。

    61010编辑于 2024-01-27
  • 来自专栏数字芯片

    spyglass | 常见错误lint

    使用以下命令打开 SpyGlass GUI,将自动加载上次运行目标 (lint/lint_rtl) spyglass -project wb_subsystem.prj & 在没有-batch时,SpyGlass W415 Multiple drivers错误 该规则确定了可以由设计中的 2 个或更多非三态驱动器同时驱动的网络。 打开原理图窗口,增量示意图窗口显示违规的结构: 可以看到两个驱动程序正在驱动信号 (WB_master_data_o[0]) ,即端口m0_data_i由端口dat_o(例如 ahb2wb_u0)和m0 /wb_subsystem/wb_subsystem/lint/lint_rtl/wb_subsystem_waiver_file.awl 我们可以将其复制到当前工作目录下,方便调用: cp . /wb_subsystem/wb_subsystem/lint/lint_rtl/wb_subsystem_waiver_file.awl .

    13.3K23发布于 2021-10-11
  • 来自专栏Open软件开发小组

    AndroidLintWatchDog Custom-Lint 自定义Lint检查的实现

    2 解决 类型1: 如果你根本没听说过 Lint,请赶紧 Google 一下 Android Lint。 因为你是一个或者很可能会成为一个技术 Leader,如果到时候要靠人工审核这些,你的麻烦就大了去了;(初级-看一下整个第二大部分) 类型2: 如果你听说过Lint没有使用过,打开你的工程cd到主工程 2 为什么要使用自定义Lint检查 Google 提供的默认 Lint 检查很全面但是我们终归会有很多项目特性、自定义规则无法满足,如开头我提到的几个案例,这时候我们需要自定义 Lint GitHub-AndroidDevNotes 构建自定义lint检查整个工程什么样的结构; 教程:自定义 Lint 规则简介 内容基本同上第2条; 美团app-lint实现方案 一直很欣赏美团的开源精神和开源实力 ,大家不妨一起拜读一下吧,其实同2、3相似,但是插件话这个是上面没有做到的; google实现好的lint检查源代码 这个主要起到参考作用,官方的大牛200多个实例; a11n-android-lint

    1.2K20发布于 2020-03-19
  • 来自专栏潇涧技术专栏

    Builtin Lint Detectors (1)

    Lint工具中自带的与Android开发相关的lint检查项。 本文主要介绍的是Lint工具中自带的与Android开发相关的lint检查项,通过查看lint检查项的描述及其代码实现,我发现这里面存在不少应用开发编码的Best Practice,有些是平常编码中非常常见的错误 在Java代码中屏蔽掉某个lint检查可以使用@SuppressLint这个注解,例如@SuppressLint("UseSparseArrays") 在XML代码中屏蔽掉某个lint检查可以使用tools (2) Missing labelFor attribute 实现:LabelForDetector 说明:EditText、AutoCompleteTextView以及MultiAutoCompleteTextView android:layout_weight="2" /> </LinearLayout> </LinearLayout> (11) Missing baselineAligned attribute

    93710发布于 2018-08-01
  • 来自专栏潇涧技术专栏

    Lint Tool Analysis (1)

    Lint工具的源码分析(1) 本系列的几篇源码分析文档意义不大,如果你正好也在研究lint源码,或者你想知道前面自定义lint规则中提出的那几个问题,抑或你只是想大致了解下lint的源码都有些什么内容的话 lint工具源码主要分成两部分:lint-api和lint-checks,前者主要是lint的核心API,后者是利用API定义的检查器。 //其他类型的scope } (2) Context类表示lint检查时的上下文环境,包括需要进行分析的项目和文件的信息以及lint规则的配置信息,例如Project,File,LintDriver,Configuration regexp.isEmpty()) { formatError("Missing required attribute %1$s or %2$ if (paths == null) { paths = new ArrayList<String>(n / 2

    1.3K10发布于 2018-08-01
  • 来自专栏潇涧技术专栏

    Lint Tool Analysis (3)

    Lint工具的源码分析(3) 本系列的几篇源码分析文档意义不大,如果你正好也在研究lint源码,或者你想知道前面自定义lint规则中提出的那几个问题,抑或你只是想大致了解下lint的源码都有些什么内容的话 这也导致如果项目中使用了旧的API自定义的lint规则的话,lint会对这个文件检查两次,从而使得lint检查的速度变慢。 (1) compile 'com.android.tools.lint:lint-api:24.5.0' 使用JavaScanner => older Lombok AST API (2) compile (2) JavaPsiScanner 注意:在最新的25.2.0版本的lint-api中JavaScanner已经被注明为deprecated了,推荐使用JavaPsiScanner。 String.format( "The logging tag can be at most 23 characters, was %1$d (%2$

    1.3K10发布于 2018-08-01
  • 来自专栏CRPER折腾记

    husky 7 + lint-staged 11+ prettier 2 + eslint 7 配置

    /src --ext .jsx,.js,.ts,.tsx --fix --quiet --ignore-path .gitignore", "lint:format": "prettier {js,jsx,ts,tsx,css,md,json}\" ", "lint:style": "stylelint src/**/*. 初始化过的会自动跳过~ "scripts": { "prepare": "husky install", }, 成功执行的化,功能根目录会存在一个.husky的目录; 最新版的husky走的是标准的shell脚本 "$(dirname "$0")/_/husky.sh" # 这里就是唤醒lint-staged npx lint-staged commitlint配置 package.json 这里就是读取那个规范 invalidHref', 'preferButton'], }, ], }, }; prettier配置(.prettierrc.json) 哇哈哈,是不是很简陋,我完整的过了一边v2的文档

    1.8K40编辑于 2022-03-08
  • 来自专栏希里安

    一文了解Lint

    2. 统一代码风格和规范,提高代码可读性。 3. 检测安全漏洞、潜在 bug 等,减少未来问题。 4. 提供可靠的自动化代码检查,辅助代码审查。 [2] 遵循相应的代码规范有以下好处 - 较少 bug 错误率 - 高效的开发效率 - 更高的可读性 ### 主流lint工具 1. 官网: https://www.eslint.org 快速开始: npm init @eslint/config 2. stylelint:由 stylelint 组织维护 ,用于 CSS/SCSS 等样式语言 官网: https://stylelint.io/ 快速开始: 1. npm init stylelint 2. [2]: https://doc.vvbin.cn/dep/lint.html

    1.5K11编辑于 2023-10-30
  • 来自专栏OpenFPGA

    使用 Verilator 进行 Verilog Lint

    当尝试对引用供应商原语的模块进行 lint 处理时,将收到如下错误: %Error: clock_pix.sv:29:5: Cannot find file containing module: 'MMCME2 Looked in: MMCME2_BASE MMCME2_BASE.v MMCME2_BASE.sv obj_dir/MMCME2_BASE obj_dir/MMCME2_BASE.v obj_dir/MMCME2_BASE.sv 第一个想法可能是找到一种排除 Linting Shell Script 如果有许多顶级模块和/或包含目录,可以使用 Makefile 或简单的 shell 脚本自动检查。 以下 shell 脚本 lint 与该脚本位于同一目录中的所有顶级模块: #!

    1.1K10编辑于 2023-09-21
  • 来自专栏向治洪

    android 自定义Lint

    :lint-api:24.5.0' compile 'com.android.tools.lint:lint-checks:24.5.0' } 注:lint-api: 官方给出的API,API并不是最终版 String> map1 = new HashMap<Integer, String>(); map1.put(1, "name"); HashMap<Integer, String> map2 = new HashMap<>(); map2.put(1, "name"); Map<Integer, String> map3 = new HashMap<>(); map3 = 2) { /* JDK 7 新写法 HashMap<Integer, String> map2 = new HashMap<>(); map2.put(1, "name"); Map<Integer, String> map3 = new HashMap<>(); map3.put(1, "name")

    1.7K100发布于 2018-02-06
  • 来自专栏Linux学习~

    Shell脚本学习2

    Shell脚本学习2 运算符 Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。 # 命令行直接计算 expr 2 + 2 #4 expr 3 - 2 #1 expr 3 / 2 #1 expr 3 \* 2 #6 # 使用表达式 a=10 b=20 val=`expr /bin/bash str1='i' str2='love' str3='you' echo $str1 $str2 $str3 echo $str1$str2$str3 echo $str1,$str2 echo ${str:2:2} # 从第2个截取2个。 echo ${str:0} # 全部截取。 echo ${str:-3} # 负数无效,视为0。 : echo ${array_name[2]} #读取下标为2的元素 echo ${array_name[*]} #读取所有元素 echo ${array_name[@]} #读取所有元素 echo

    66020编辑于 2023-10-17
  • 来自专栏everhad

    Android代码分析工具lint学习

    1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具。 1.2 lint工作流程 针对我们的项目,通过lint.xml配置lint分析的选项,执行检查后,会针对要分析的issue生成报告。 ? 2 lint使用 有关lint的使用,有以下地方需要理解: 2.1 分析的范围 要对Android项目进行静态分析,首先就是指定要分析的源文件的范围。包括以下方面: 整个工程或模块。 目录和文件。 > <lint> <! 小结 使用lint进行代码的检查和分析十分简单高效,在发布版本前,使用lint对工程进行优化,何乐而不为。

    1.6K90发布于 2018-01-08
  • 来自专栏写代码和思考

    使用Android Lint检查代码缺陷

    背景 Android Lint 是Android自带的代码检查工具,它能帮助我们识别很多潜在的错误。 Lint 介绍 Android Lint 可以扫描android项目源代码中的潜在错误。 我们可以将 Lint 工具集成到我们CI过程中去,构成研发体系的一部分。 /lint.xml") htmlOutput file("$reportsDir/lint/lint-result.html") xmlOutput file ("$reportsDir/lint/lint-result.xml") } } 参考 https://developer.android.google.cn/studio/write /lint.html https://sites.google.com/a/android.com/tools/tips/lint https://www.jianshu.com/p/b4c44e62d652

    1.5K00发布于 2020-03-16
  • 来自专栏移动开发

    Android 自定义 Lint 调试

    点击 Edit Configurations 2. 点击 + 号 Add New Configuration 按钮 3. 选择 Remote 4. 在编写好的 Lint 检查规则里,打好需要调式的断点。在 Teminal 窗口下执行以下命令 .

    1.2K20发布于 2021-01-27
  • 来自专栏逮虾户

    Android自定义lint开发

    lint配置 对于执行 Lint 操作的相关配置,是定义在 gradle 文件的 lintOptions 中,可定义的选项及其默认值 android { lintOptions { checks已经更新到v2版本了,所以配置项必须按照如下规则填写。 :lint-api:26.4.2' compileOnly 'com.android.tools.lint:lint-checks:26.4.2' } sourceCompatibility = "1.8" targetCompatibility = "1.8" jar { manifest { attributes("Lint-Registry-v2": "com.xxx.lint.router =IssueRegistry") } } 这里面有个很关键的点 attributes  "Lint-Registry-v2" 这个key必须要写死。

    1.2K40发布于 2020-10-15
  • 来自专栏E条咸鱼

    脚本刷课思路-2

    类似前言的PI话 上一篇是基础篇,内容是关于爬虫的时候注意的动态页面和静态页面的区别,其实也没啥实质性的内容,这一篇才是刷课的一个思路 现在论坛或者其他地方肯定都有分享浏览器刷课的脚本,但是这类脚本通常都是需要你开着浏览器 ,然后脚本自动给你调1.5倍速、静音、自动切换下一个视频这样,我个人而言,不是很喜欢这类的脚本,我更偏向于,运行一下,所有的视频就全都看完了,所以实际的思路上,和那类脚本是完全不一样的 我这种脚本的做法 所以最后获取了所有的id后,直接拿这个接口疯狂发送数据,告诉他你看完了就好了,至于时长,自己把握,别刷了上百个小时 PS:昨天发现服务器上的一个服务有点问题,凌晨2点钟了还没睡,所有写这篇的时候,可能稍微逻辑有点不清

    3.2K31发布于 2020-08-17
  • 来自专栏用户画像

    shell脚本 >devnull 2>&1

    1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt 2:/dev/null 代表空设备文件 3:2> 表示stderr标准错误 4:& 表示等同于的意思,2>&1,表示 你可以用 ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中; ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了 用strace可以看到: 1. command > file 2>&1 这个命令中实现重定向的关键系统调用序列是: open(file) == 3 dup2(3,1) dup2(1,2) 2. command 2>&1 >file 这个命令中实现重定向的关键系统调用序列是: dup2(1,2) open(file) == 3 dup2(3,1) 为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到 从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法.

    69210发布于 2018-08-27
领券