-
Notifications
You must be signed in to change notification settings - Fork 174
/
Copy pathuser-guide.html
2524 lines (1810 loc) · 155 KB
/
user-guide.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<html><head><meta charset="utf-8" lang="kotlin">
</head><body style="visibility: visible;" id="md"><meta charset="UTF-8"><meta http-equiv="content-type" content="text/html;charset=UTF-8"><meta name="viewport" content="width=600, initial-scale=1"><style>body{max-width:680px;margin:auto;padding:20px;text-align:justify;line-height:140%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;color:#222;font-family:Palatino,Georgia,"Times New Roman",serif}</style><style>@media print{*{-webkit-print-color-adjust:exact;text-shadow:none !important}}body{counter-reset: h1 paragraph line item list-item}@page{margin:0;size:auto}#mdContextMenu{position:absolute;background:#383838;cursor:default;border:1px solid #999;color:#fff;padding:4px 0px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,"Helvetica Neue",sans-serif;font-size:85%;font-weight:600;border-radius:4px;box-shadow:0px 3px 10px rgba(0,0,0,35%)}#mdContextMenu div{padding:0px 20px}#mdContextMenu div:hover{background:#1659d1}.md code,.md pre{font-family:Menlo,Consolas,monospace;font-size:85%;text-align:left;line-height:140%}.md .mediumToc code,.md longToc code,.md .shortToc code,.md h1 code,.md h2 code,.md h3 code,.md h4 code,.md h5 code,.md h6 code{font-size:unset}.md div.title{font-size:26px;font-weight:800;line-height:120%;text-align:center}.md div.afterTitles{height:10px}.md div.subtitle{text-align:center}.md iframe.textinsert, .md object.textinsert,.md iframe:not(.markdeep){display:block;margin-top:10px;margin-bottom:10px;width:100%;height:75vh;border:1px solid #000;border-radius:4px;background:#f5f5f4}.md .image{display:inline-block}.md img{max-width:100%;page-break-inside:avoid}.md li{text-align:left;text-indent:0}.md pre.listing {width:100%;tab-size:4;-moz-tab-size:4;-o-tab-size:4;counter-reset:line;overflow-x:auto;resize:horizontal}.md pre.listing .linenumbers span.line:before{width:30px;margin-left:-28px;font-size:80%;text-align:right;counter-increment:line;content:counter(line);display:inline-block;padding-right:13px;margin-right:8px;color:#ccc}.md div.tilde{margin:20px 0 -10px;text-align:center}.md .imagecaption,.md .tablecaption,.md .listingcaption{display:inline-block;margin:7px 5px 12px;text-align:justify;font-style:italic}.md img.pixel{image-rendering:-moz-crisp-edges;image-rendering:pixelated}.md blockquote.fancyquote{margin:25px 0 25px;text-align:left;line-height:160%}.md blockquote.fancyquote::before{content:"“";color:#DDD;font-family:Times New Roman;font-size:45px;line-height:0;margin-right:6px;vertical-align:-0.3em}.md span.fancyquote{font-size:118%;color:#777;font-style:italic}.md span.fancyquote::after{content:"”";font-style:normal;color:#DDD;font-family:Times New Roman;font-size:45px;line-height:0;margin-left:6px;vertical-align:-0.3em}.md blockquote.fancyquote .author{width:100%;margin-top:10px;display:inline-block;text-align:right}.md small{font-size:60%}.md big{font-size:150%}.md div.title,.md contents,.md .tocHeader,.md h1,.md h2,.md h3,.md h4,.md h5,.md h6,.md .shortTOC,.md .mediumTOC,.md .nonumberh1,.md .nonumberh2,.md .nonumberh3,.md .nonumberh4,.md .nonumberh5,.md .nonumberh6{font-family:Verdana,Helvetica,Arial,sans-serif;margin:13.4px 0 13.4px;padding:15px 0 3px;border-top:none;clear:both}.md .tocTop {display:none}.md h1,.md h2,.md h3,.md h4,.md h5,.md h6,.md .nonumberh1,.md .nonumberh2,.md .nonumberh3,.md .nonumberh4,.md .nonumberh5,.md .nonumberh6{page-break-after:avoid;break-after:avoid}.md svg.diagram{display:block;font-family:Menlo,Consolas,monospace;font-size:85%;text-align:center;stroke-linecap:round;stroke-width:2px;page-break-inside:avoid;stroke:#000;fill:#000}.md svg.diagram .opendot{fill:#fff}.md svg.diagram .shadeddot{fill:#CCC}.md svg.diagram .dotteddot{stroke:#000;stroke-dasharray:4;fill:none}.md svg.diagram text{stroke:none}@media print{@page{margin:1in 5mm;transform: scale(150%)}}@media print{.md .pagebreak{page-break-after:always;visibility:hidden}}.md a{font-family:Georgia,Palatino,'Times New Roman'}.md h1,.md .tocHeader,.md .nonumberh1{border-bottom:3px solid;font-size:20px;font-weight:bold;}.md h1,.md .nonumberh1{counter-reset:h2 h3 h4 h5 h6}.md h2,.md .nonumberh2{counter-reset:h3 h4 h5 h6;border-bottom:2px solid #999;color:#555;font-weight:bold;font-size:18px;}.md h3,.md h4,.md h5,.md h6,.md .nonumberh3,.md .nonumberh4,.md .nonumberh5,.md .nonumberh6{font-family:Verdana,Helvetica,Arial,sans-serif;color:#555;font-size:16px;}.md h3{counter-reset:h4 h5 h6}.md h4{counter-reset:h5 h6}.md h5{counter-reset:h6}.md div.table{margin:16px 0 16px 0}.md table{border-collapse:collapse;line-height:140%;page-break-inside:avoid}.md table.table{margin:auto}.md table.longtable th{top:0;position:sticky}.md table.calendar{width:100%;margin:auto;font-size:11px;font-family:Verdana,Helvetica,Arial,sans-serif}.md table.calendar th{font-size:16px}.md .today{background:#ECF8FA}.md .calendar .parenthesized{color:#999;font-style:italic}.md table.table th{color:#FFF;background-color:#AAA;border:1px solid #888;padding:8px 15px 8px 15px}.md table.table td{padding:5px 15px 5px 15px;border:1px solid #888}.md table.table tr:nth-child(even){background:#EEE}.md pre.tilde{border-top: 1px solid #CCC;border-bottom: 1px solid #CCC;padding: 5px 0 5px 20px;margin:0 0 0 0;background:#FCFCFC;page-break-inside:avoid}.md a.target{width:0px;height:0px;visibility:hidden;font-size:0px;display:inline-block}.md a:link, .md a:visited{color:#38A;text-decoration:none}.md a:link:hover{text-decoration:underline}.md dt{font-weight:700}.md dl>dd{margin-top:-8px; margin-bottom:8px}.md dl>table{margin:35px 0 30px}.md code{page-break-inside:avoid;} @media print{.md .listing code{white-space:pre-wrap}}.md .endnote{font-size:13px;line-height:15px;padding-left:10px;text-indent:-10px}.md .bib{padding-left:80px;text-indent:-80px;text-align:left}.markdeepFooter{font-size:9px;text-align:right;padding-top:80px;color:#999}.md .mediumTOC{float:right;font-size:12px;line-height:15px;border-left:1px solid #CCC;padding-left:15px;margin:15px 0px 15px 25px}.md .mediumTOC .level1{font-weight:600}.md .longTOC .level1{font-weight:600;display:block;padding-top:12px;margin:0 0 -20px}.md .shortTOC{text-align:center;font-weight:bold;margin-top:15px;font-size:14px}.md .img-attrib-container .img-attrib{font-size:50%;line-height:120%;writing-mode:vertical-rl;position:absolute;bottom:0;right:0;padding:8px 4px;color:#FFF;background-color:rgba(0,0,0,.3)}.md .img-attrib-container .img-attrib a{color:#FFF;text-decoration:none}.md .admonition{position:relative;margin:1em 0;padding:.4rem 1rem;border-radius:.2rem;border-left:2.5rem solid rgba(68,138,255,.4);background-color:rgba(68,138,255,.15);}.md .admonition-title{font-weight:bold;border-bottom:solid 1px rgba(68,138,255,.4);padding-bottom:4px;margin-bottom:4px;margin-left: -1rem;padding-left:1rem;margin-right:-1rem;border-color:rgba(68,138,255,.4)}.md .admonition.tip{border-left:2.5rem solid rgba(50,255,90,.4);background-color:rgba(50,255,90,.15)}.md .admonition.tip::before{content:"\24d8";font-weight:bold;font-size:150%;position:relative;top:3px;color:rgba(26,128,46,.8);left:-2.95rem;display:block;width:0;height:0}.md .admonition.tip>.admonition-title{border-color:rgba(50,255,90,.4)}.md .admonition.warn,.md .admonition.warning{border-left:2.5rem solid rgba(255,145,0,.4);background-color:rgba(255,145,0,.15)}.md .admonition.warn::before,.md .admonition.warning::before{content:"\26A0";font-weight:bold;font-size:150%;position:relative;top:2px;color:rgba(128,73,0,.8);left:-2.95rem;display:block;width:0;height:0}.md .admonition.warn>.admonition-title,.md .admonition.warning>.admonition-title{border-color:rgba(255,145,0,.4)}.md .admonition.error{border-left: 2.5rem solid rgba(255,23,68,.4);background-color:rgba(255,23,68,.15)}.md .admonition.error>.admonition-title{border-color:rgba(255,23,68,.4)}.md .admonition.error::before{content: "\2612";font-family:"Arial";font-size:200%;position:relative;color:rgba(128,12,34,.8);top:-2px;left:-3rem;display:block;width:0;height:0}.md .admonition p:last-child{margin-bottom:0}.md li.checked,.md li.unchecked{list-style:none;overflow:visible;text-indent:-1.2em}.md li.checked:before,.md li.unchecked:before{content:"\2611";display:block;float:left;width:1em;font-size:120%}.md li.unchecked:before{content:"\2610"}</style><style>.md h1::before {
content:counter(h1) " ";
counter-increment: h1;margin-right:10px}
.md h2::before {
content:counter(h1) "."counter(h2) " ";
counter-increment: h2;margin-right:10px}
.md h3::before {
content:counter(h1) "."counter(h2) "."counter(h3) " ";
counter-increment: h3;margin-right:10px}
.md h4::before {
content:counter(h1) "."counter(h2) "."counter(h3) "."counter(h4) " ";
counter-increment: h4;margin-right:10px}
.md h5::before {
content:counter(h1) "."counter(h2) "."counter(h3) "."counter(h4) "."counter(h5) " ";
counter-increment: h5;margin-right:10px}
.md h6::before {
content:counter(h1) "."counter(h2) "."counter(h3) "."counter(h4) "."counter(h5) "."counter(h6) " ";
counter-increment: h6;margin-right:10px}
</style><style>.hljs{display:block;overflow-x:auto;padding:0.5em;background:#fff;color:#000;-webkit-text-size-adjust:none}.hljs-comment{color:#006a00}.hljs-keyword{color:#02E}.hljs-literal,.nginx .hljs-title{color:#aa0d91}.method,.hljs-list .hljs-title,.hljs-tag .hljs-title,.setting .hljs-value,.hljs-winutils,.tex .hljs-command,.http .hljs-title,.hljs-request,.hljs-status,.hljs-name{color:#008}.hljs-envvar,.tex .hljs-special{color:#660}.hljs-string{color:#c41a16}.hljs-tag .hljs-value,.hljs-cdata,.hljs-filter .hljs-argument,.hljs-attr_selector,.apache .hljs-cbracket,.hljs-date,.hljs-regexp{color:#080}.hljs-sub .hljs-identifier,.hljs-pi,.hljs-tag,.hljs-tag .hljs-keyword,.hljs-decorator,.ini .hljs-title,.hljs-shebang,.hljs-prompt,.hljs-hexcolor,.hljs-rule .hljs-value,.hljs-symbol,.hljs-symbol .hljs-string,.hljs-number,.css .hljs-function,.hljs-function .hljs-title,.coffeescript .hljs-attribute{color:#A0C}.hljs-function .hljs-title{font-weight:bold;color:#000}.hljs-class .hljs-title,.smalltalk .hljs-class,.hljs-type,.hljs-typename,.hljs-tag .hljs-attribute,.hljs-doctype,.hljs-class .hljs-id,.hljs-built_in,.setting,.hljs-params,.clojure .hljs-attribute{color:#5c2699}.hljs-variable{color:#3f6e74}.css .hljs-tag,.hljs-rule .hljs-property,.hljs-pseudo,.hljs-subst{color:#000}.css .hljs-class,.css .hljs-id{color:#9b703f}.hljs-value .hljs-important{color:#ff7700;font-weight:bold}.hljs-rule .hljs-keyword{color:#c5af75}.hljs-annotation,.apache .hljs-sqbracket,.nginx .hljs-built_in{color:#9b859d}.hljs-preprocessor,.hljs-preprocessor *,.hljs-pragma{color:#643820}.tex .hljs-formula{background-color:#eee;font-style:italic}.diff .hljs-header,.hljs-chunk{color:#808080;font-weight:bold}.diff .hljs-change{background-color:#bccff9}.hljs-addition{background-color:#baeeba}.hljs-deletion{background-color:#ffc8bd}.hljs-comment .hljs-doctag{font-weight:bold}.method .hljs-id{color:#000}</style><style>div.title { padding-top: 40px; } div.afterTitles { height: 15px; }</style><meta charset="utf-8" lang="kotlin">
<span class="md"><p><title>Android User Guide</title></p><div class="title"> Android User Guide </div>
<div class="afterTitles"></div><div class="mediumTOC"><center><b>Contents</b></center><p><a href="#" class="tocTop" target="_self">(Top)</a><br>
<a href="#lintcommandlintflags" target="_self" class="level1"><span class="tocNumber">1 </span>Lint Command Lint Flags</a><br>
<a href="#lintcommandlintflags/general" target="_self" class="level2"><span class="tocNumber">1.1 </span>General</a><br>
<a href="#lintcommandlintflags/enabledchecks" target="_self" class="level2"><span class="tocNumber">1.2 </span>Enabled Checks</a><br>
<a href="#lintcommandlintflags/outputoptions" target="_self" class="level2"><span class="tocNumber">1.3 </span>Output Options</a><br>
<a href="#lintcommandlintflags/projectoptions" target="_self" class="level2"><span class="tocNumber">1.4 </span>Project Options</a><br>
<a href="#lintcommandlintflags/advancedoptions(forbuildsystemintegration)" target="_self" class="level2"><span class="tocNumber">1.5 </span>Advanced Options (for build system integration)</a><br>
<a href="#lintcommandlintflags/exitstatus" target="_self" class="level2"><span class="tocNumber">1.6 </span>Exit Status</a><br>
<a href="#lintgradleplugindsl" target="_self" class="level1"><span class="tocNumber">2 </span>Lint Gradle Plugin DSL</a><br>
<a href="#lintgradleplugindsl/configuringissuesandseverity" target="_self" class="level2"><span class="tocNumber">2.1 </span>Configuring Issues and Severity</a><br>
<a href="#lintgradleplugindsl/configuringoutputandreports" target="_self" class="level2"><span class="tocNumber">2.2 </span>Configuring Output and Reports</a><br>
<a href="#lintgradleplugindsl/filestoinclude" target="_self" class="level2"><span class="tocNumber">2.3 </span>Files to Include</a><br>
<a href="#lintgradleplugindsl/other" target="_self" class="level2"><span class="tocNumber">2.4 </span>Other</a><br>
<a href="#combiningagpwithnewerlint" target="_self" class="level1"><span class="tocNumber">3 </span>Combining AGP With Newer Lint</a><br>
<a href="#combiningagpwithnewerlint/configuringthelintversion" target="_self" class="level2"><span class="tocNumber">3.1 </span>Configuring the Lint Version</a><br>
<a href="#combiningagpwithnewerlint/updatinglint" target="_self" class="level2"><span class="tocNumber">3.2 </span>Updating Lint</a><br>
<a href="#baselines" target="_self" class="level1"><span class="tocNumber">4 </span>Baselines</a><br>
<a href="#baselines/creatingabaseline" target="_self" class="level2"><span class="tocNumber">4.1 </span>Creating a Baseline</a><br>
<a href="#baselines/customizethebaseline" target="_self" class="level2"><span class="tocNumber">4.2 </span>Customize the baseline</a><br>
<a href="#baselines/baselinewarning" target="_self" class="level2"><span class="tocNumber">4.3 </span>Baseline warning</a><br>
<a href="#performancetuning" target="_self" class="level1"><span class="tocNumber">5 </span>Performance Tuning</a><br>
<a href="#performancetuning/use7.0andincrementallint" target="_self" class="level2"><span class="tocNumber">5.1 </span>Use 7.0 and Incremental Lint</a><br>
<a href="#performancetuning/usethelintdebugtarget,notlint" target="_self" class="level2"><span class="tocNumber">5.2 </span>Use the <code>lintDebug</code> target, not <code>lint</code></a><br>
<a href="#performancetuning/onlyanalyzeapp/leafmodules" target="_self" class="level2"><span class="tocNumber">5.3 </span>Only analyze app/leaf modules</a><br>
<a href="#performancetuning/don'tanalyzetestsources" target="_self" class="level2"><span class="tocNumber">5.4 </span>Don't analyze test sources</a><br>
<a href="#performancetuning/don'tusecheckallwarnings" target="_self" class="level2"><span class="tocNumber">5.5 </span>Don't use checkAllWarnings</a><br>
<a href="#performancetuning/uselatestversion" target="_self" class="level2"><span class="tocNumber">5.6 </span>Use latest version</a><br>
<a href="#performancetuning/givelintalotofram" target="_self" class="level2"><span class="tocNumber">5.7 </span>Give lint a lot of RAM</a><br>
<a href="#performancetuning/findingslowlintchecks" target="_self" class="level2"><span class="tocNumber">5.8 </span>Finding Slow Lint Checks</a><br>
<a href="#suppressinglintchecks" target="_self" class="level1"><span class="tocNumber">6 </span>Suppressing Lint Checks</a><br>
<a href="#configuringusinglint.xmlfiles" target="_self" class="level1"><span class="tocNumber">7 </span>Configuring Using lint.xml Files</a><br>
<a href="#configuringusinglint.xmlfiles/xmlsyntax" target="_self" class="level2"><span class="tocNumber">7.1 </span>XML Syntax</a><br>
<a href="#configuringusinglint.xmlfiles/nesting&precedence" target="_self" class="level2"><span class="tocNumber">7.2 </span>Nesting & Precedence</a><br>
<a href="#configuringusinglint.xmlfiles/samplelint.xmlfile" target="_self" class="level2"><span class="tocNumber">7.3 </span>Sample lint.xml file</a><br>
<a href="#appendix:recentchanges" target="_self" class="level1"><span class="tocNumber">8 </span>Appendix: Recent Changes</a><br>
<a href="#appendix:environmentvariablesandsystemproperties" target="_self" class="level1"><span class="tocNumber">9 </span>Appendix: Environment Variables and System Properties</a><br>
<a href="#appendix:environmentvariablesandsystemproperties/environmentvariables" target="_self" class="level2"><span class="tocNumber">9.1 </span>Environment Variables</a><br>
<a href="#appendix:environmentvariablesandsystemproperties/environmentvariables/detectorconfigurationvariables" target="_self" class="level3"><span class="tocNumber">9.1.1 </span>Detector Configuration Variables</a><br>
<a href="#appendix:environmentvariablesandsystemproperties/environmentvariables/lintconfigurationvariables" target="_self" class="level3"><span class="tocNumber">9.1.2 </span>Lint Configuration Variables</a><br>
<a href="#appendix:environmentvariablesandsystemproperties/environmentvariables/lintdevelopmentvariables" target="_self" class="level3"><span class="tocNumber">9.1.3 </span>Lint Development Variables</a><br>
<a href="#appendix:environmentvariablesandsystemproperties/systemproperties" target="_self" class="level2"><span class="tocNumber">9.2 </span>System Properties</a><br>
</p></div>
<p></p><p>
This chapter inlines all the usage information into a single
long book, suitable for printing or reading on a tablet.
</p><p>
<strong class="asterisk">Recent Changes</strong>
</p><p>
This chapter lists recent changes to lint that affect users of lint.
For information about internal improvements and API changes affecting
lint check authors, see the API Guide.
</p><p>
<strong class="asterisk">8.9</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>NioDesugaring</code> </td><td style="text-align:left"> Unsupported <code>java.nio</code> operations </td></tr>
<tr><td style="text-align:left"> <code>PrivacySandboxBlockedCall</code> </td><td style="text-align:left"> Call is blocked in the Privacy Sandbox </td></tr>
<tr><td style="text-align:left"> <code>UseRequiresApi</code> </td><td style="text-align:left"> Use <code>@RequiresApi</code> instead of <code>@TargetApi</code> </td></tr>
<tr><td style="text-align:left"> <code>WrongSdkInt</code> </td><td style="text-align:left"> Mismatched SDK_INT or SDK_INT_FULL </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">The <code>ImplicitSamInstance</code> check is now turned on by default, and covers
a broader set of scenarios.</li></ul>
<p></p><p>
<strong class="asterisk">8.8</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>AppLinkSplitToWebAndCustom</code> </td><td style="text-align:left"> Android App links should only use http(s) schemes </td></tr>
<tr><td style="text-align:left"> <code>AppLinkWarning</code> </td><td style="text-align:left"> App Link warning </td></tr>
<tr><td style="text-align:left"> <code>CredentialManagerMisuse</code> </td><td style="text-align:left"> Misuse of Credential Manager API </td></tr>
<tr><td style="text-align:left"> <code>PlaySdkIndexVulnerability</code> </td><td style="text-align:left"> Library has vulnerability issues in SDK Index </td></tr>
<tr><td style="text-align:left"> <code>UnsanitizedFilenameFromContentProvider</code> </td><td style="text-align:left"> Trusting ContentProvider filenames without any sanitization </td></tr>
</tbody></table></div>
<p></p><p>
<strong class="asterisk">8.7</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>ChildInNonViewGroup</code> </td><td style="text-align:left"> Only view groups can have children </td></tr>
<tr><td style="text-align:left"> <code>CredManMissingDal</code> </td><td style="text-align:left"> Missing Digital Asset Link for Credential Manager </td></tr>
<tr><td style="text-align:left"> <code>CredentialManagerSignInWithGoogle</code> </td><td style="text-align:left"> Misuse of Sign in with Google API </td></tr>
<tr><td style="text-align:left"> <code>UnnecessaryRequiredFeature</code> </td><td style="text-align:left"> Potentially unnecessary required feature </td></tr>
</tbody></table></div>
<p></p><p>
<strong class="asterisk">8.6</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>AccessibilityFocus</code> </td><td style="text-align:left"> Forcing accessibility focus </td></tr>
<tr><td style="text-align:left"> <code>AccessibilityScrollActions</code> </td><td style="text-align:left"> Incomplete Scroll Action support </td></tr>
<tr><td style="text-align:left"> <code>AccessibilityWindowStateChangedEvent</code> </td><td style="text-align:left"> Use of accessibility window state change events </td></tr>
<tr><td style="text-align:left"> <code>CredentialDependency</code> </td><td style="text-align:left"> <code>credentials-play-services-auth</code> is Required </td></tr>
<tr><td style="text-align:left"> <code>PictureInPictureIssue</code> </td><td style="text-align:left"> Picture In Picture best practices not followed </td></tr>
<tr><td style="text-align:left"> <code>SimilarGradleDependency</code> </td><td style="text-align:left"> Multiple Versions Gradle Dependency </td></tr>
<tr><td style="text-align:left"> <code>UnclosedTrace</code> </td><td style="text-align:left"> Incorrect trace section usage </td></tr>
<tr><td style="text-align:left"> <code>UnnecessaryRequiredFeature</code> </td><td style="text-align:left"> Potentially unnecessary required feature </td></tr>
<tr><td style="text-align:left"> <code>UnsanitizedFilenameFromContentProvider</code> </td><td style="text-align:left"> Trusting ContentProvider filenames without any sanitization </td></tr>
</tbody></table></div>
<p></p><p>
<strong class="asterisk">8.4</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint-checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>BuildListAdds</code> </td><td style="text-align:left"> Missing <code>add</code> call in <code>buildList</code> </td></tr>
<tr><td style="text-align:left"> <code>PublicKeyCredential</code> </td><td style="text-align:left"> Creating public key credential </td></tr>
<tr><td style="text-align:left"> <code>SecretInSource</code> </td><td style="text-align:left"> Secret in source code </td></tr>
<tr><td style="text-align:left"> <code>LintBaselineFixed</code> </td><td style="text-align:left"> Baseline issues fixed </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">The <code>LintBaseline</code> issue was reporting two different types of issues:
<p></p><p>
</p><ol start="1">
<li class="number">An informational message that a baseline was applied, listing the
</li></ol>
</li><li class="number">number of errors and warnings that were filtered out because of the
baseline
<p></p><p>
</p><ol start="2">
<li class="number">Whether one or more problems listed in the baseline are no longer
</li></ol>
</li><li class="number">reported, meaning the issue has likely been fixed — so the baseline
can be updated (for example to prevent the issue from silently
reoccurring).
<p></p><p>
Since these are separate problems and you may want to configure one
and not the other to be a warning or an error, the <code>LintBaseline</code>
issue id is now only used for the first type of issue, and the second
one is reported under a new issue ID, <code>LintBaselineFixed</code>. If you had
previously suppressed <code>LintBaseline</code> in order to remove both of these
reports, you'l need to also suppress <code>LintBaselineFixed</code>.</p></li></ul>
<p></p><p>
<strong class="asterisk">8.3</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint-checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>ActivityIconColor</code> </td><td style="text-align:left"> Ongoing activity icon is not white </td></tr>
<tr><td style="text-align:left"> <code>SelectedPhotoAccess</code> </td><td style="text-align:left"> Behavior change when requesting photo library access </td></tr>
<tr><td style="text-align:left"> <code>UseSdkSuppress</code> </td><td style="text-align:left"> Using <code>@SdkSuppress</code> instead of <code>@RequiresApi</code> </td></tr>
<tr><td style="text-align:left"> <code>WrongCommentType</code> </td><td style="text-align:left"> Wrong Comment Type </td></tr>
</tbody></table></div>
<p></p><p>
<strong class="asterisk">8.2</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint-checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table longtable"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>ForegroundServicePermission</code> </td><td style="text-align:left"> Missing permissions required by foregroundServiceType </td></tr>
<tr><td style="text-align:left"> <code>ForegroundServiceType</code> </td><td style="text-align:left"> Missing <code>foregroundServiceType</code> attribute in manifest </td></tr>
<tr><td style="text-align:left"> <code>IntentWithNullActionLaunch</code> </td><td style="text-align:left"> Unsafe intent launched with no action set </td></tr>
<tr><td style="text-align:left"> <code>MutableImplicitPendingIntent</code> </td><td style="text-align:left"> Mutable Implicit PendingIntent is disallowed </td></tr>
<tr><td style="text-align:left"> <code>PlaySdkIndexGenericIssues</code> </td><td style="text-align:left"> Library has issues in SDK Index </td></tr>
<tr><td style="text-align:left"> <code>StartActivityAndCollapseDeprecated</code> </td><td style="text-align:left"> TileService.startActivityAndCollapse(Intent) is deprecated </td></tr>
<tr><td style="text-align:left"> <code>TilePreviewImageFormat</code> </td><td style="text-align:left"> Tile preview is not compliant with standards </td></tr>
<tr><td style="text-align:left"> <code>WearBackNavigation</code> </td><td style="text-align:left"> Wear: Disabling Back navigation </td></tr>
<tr><td style="text-align:left"> <code>WearMaterialTheme</code> </td><td style="text-align:left"> Using not non-Wear <code>MaterialTheme</code> in a Wear OS project </td></tr>
<tr><td style="text-align:left"> <code>WearPasswordInput</code> </td><td style="text-align:left"> Wear: Using password input </td></tr>
<tr><td style="text-align:left"> <code>WearRecents</code> </td><td style="text-align:left"> Wear OS: Recents and app resume </td></tr>
<tr><td style="text-align:left"> <code>WearSplashScreen</code> </td><td style="text-align:left"> Wear: Use <code>SplashScreen</code> library </td></tr>
</tbody></table></div>
<p></p><p>
<strong class="asterisk">8.1</strong>
</p><p>
</p><ul>
<li class="asterisk">Lint now supports and includes checks for Gradle version catalog
files. The built in checks around dependencies in Gradle files
also apply to these TOML version catalog files.
<p></p><p>
</p></li>
<li class="asterisk">New built-in lint-checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>NoOp</code> </td><td style="text-align:left"> Finds leftover code constructs which have no side effect or purpose </td></tr>
<tr><td style="text-align:left"> <code>UnspecifiedRegisterReceiverFlag</code> </td><td style="text-align:left"> Missing <code>registerReceiver()</code> exported flag </td></tr>
<tr><td style="text-align:left"> <code>UnsafeIntentLaunch</code> </td><td style="text-align:left"> Launched unsafe Intent </td></tr>
<tr><td style="text-align:left"> <code>UnsafeImplicitIntentLaunch</code> </td><td style="text-align:left"> Implicit intent matches an internal non-exported component </td></tr>
<tr><td style="text-align:left"> <code>ReportShortcutUsage</code> </td><td style="text-align:left"> Shortcut usage should be reported </td></tr>
<tr><td style="text-align:left"> <code>UseTomlInstead</code> </td><td style="text-align:left"> Mixing and matching Gradle build file and TOML dependencies </td></tr>
<tr><td style="text-align:left"> <code>KaptUsageInsteadOfKsp</code> </td><td style="text-align:left"> Using kapt where KSP would also be available </td></tr>
<tr><td style="text-align:left"> <code>BomWithoutPlatform</code> </td><td style="text-align:left"> BOM artifact added as a dependency instead of as a platform </td></tr>
<tr><td style="text-align:left"> <code>ProviderReadPermissionOnly</code> </td><td style="text-align:left"> Provider with readPermission only and implemented write APIs </td></tr>
<tr><td style="text-align:left"> <code>MutableImplicitPendingIntent</code> </td><td style="text-align:left"> Mutable implicit PendingIntent is disallowed </td></tr>
</tbody></table></div>
<p></p><p>
(The <code>NoOp</code> and <code>UnsafeImplicitIntentLaunch</code> lint checks are
currently disabled by default.)
</p><p>
<strong class="asterisk">8.0</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint-checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>ChromeOsOnConfigurationChanged</code> </td><td style="text-align:left"> ChromeOS performance checks in onConfigurationChanged() </td></tr>
<tr><td style="text-align:left"> <code>SetAndClearCommunicationDevice</code> </td><td style="text-align:left"> Missing <code>clearCommunicationDevice()</code> after set </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">Lint's API check now supports SDK extensions. The version checking
utilities (VersionChecks, ApiConstraint) have also been improved
to handle more scenarios.</li></ul>
<p></p><p>
<strong class="asterisk">7.4</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint-checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table longtable"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>PermissionNamingConvention</code> </td><td style="text-align:left"> Custom permissions not following naming convention </td></tr>
<tr><td style="text-align:left"> <code>KnownPermissionError</code> </td><td style="text-align:left"> Well-known permission errors, e.g. <code>android:permission="true"</code> </td></tr>
<tr><td style="text-align:left"> <code>SystemPermissionTypo</code> </td><td style="text-align:left"> Usage of permissions that look like system permissions, but have typos </td></tr>
<tr><td style="text-align:left"> <code>CustomPermissionTypo</code> </td><td style="text-align:left"> Usage of permissions that look like custom permissions from the same project, but have typos </td></tr>
<tr><td style="text-align:left"> <code>ReservedSystemPermission</code> </td><td style="text-align:left"> Accidental redefining of a framework permission, or usage of the <code>andriod.</code> prefix </td></tr>
<tr><td style="text-align:left"> <code>GestureBackNavigation</code> </td><td style="text-align:left"> Usage of KeyEvent.KEYCODE_BACK </td></tr>
<tr><td style="text-align:left"> <code>UnusedTranslation</code> </td><td style="text-align:left"> Unused translation, not declared in localeConfig </td></tr>
<tr><td style="text-align:left"> <code>NotificationPermission</code> </td><td style="text-align:left"> Notifications Without android.permission.POST_NOTIFICATIONS </td></tr>
<tr><td style="text-align:left"> <code>MonochromeLauncherIcon</code> </td><td style="text-align:left"> Monochrome icon is not defined </td></tr>
<tr><td style="text-align:left"> <code>PlaySdkIndexNonCompliant</code> </td><td style="text-align:left"> Library has policy issues in SDK Index </td></tr>
<tr><td style="text-align:left"> <code>TileProviderPermissions</code> </td><td style="text-align:left"> TileProvider does not set permission </td></tr>
<tr><td style="text-align:left"> <code>SquareAndRoundTilePreviews</code> </td><td style="text-align:left"> TileProvider does not have round and square previews </td></tr>
<tr><td style="text-align:left"> <code>InternalInsetResource</code> </td><td style="text-align:left"> Using internal inset dimension resource </td></tr>
<tr><td style="text-align:left"> <code>BinderGetCallingInMainThread</code> </td><td style="text-align:left"> Incorrect usage of getCallingUid() or getCallingPid() </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">Lint now respects the <code>--offline</code> flag passed to Gradle, and will refrain
from making network calls for checks that normally do (such as
<code>AppLinksAutoVerify</code>).</li></ul>
<p></p><p>
<strong class="asterisk">7.3</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint-checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>SuspiciousIndentation</code> </td><td style="text-align:left"> Flags suspiciously indented code </td></tr>
<tr><td style="text-align:left"> <code>StringFormatTrivial</code> </td><td style="text-align:left"> Avoid trivial conversions in String.format </td></tr>
<tr><td style="text-align:left"> <code>WearableActionDuplicate</code> </td><td style="text-align:left"> Duplicate watch face configurations </td></tr>
<tr><td style="text-align:left"> <code>EmptySuperCall</code> </td><td style="text-align:left"> Invoking super. on @EmptySuper method </td></tr>
<tr><td style="text-align:left"> <code>OpenForTesting</code> </td><td style="text-align:left"> Overriding @OpenForTesting outside tests </td></tr>
<tr><td style="text-align:left"> <code>DeprecatedSinceApi</code> </td><td style="text-align:left"> Calling deprecated SDK backport methods </td></tr>
<tr><td style="text-align:left"> <code>ReturnThis</code> </td><td style="text-align:left"> Not returning “this” from @ReturnThis methods </td></tr>
<tr><td style="text-align:left"> <code>KotlinNullnessAnnotation</code> </td><td style="text-align:left"> Using nullability annotations in Kotlin </td></tr>
<tr><td style="text-align:left"> <code>MissingInflatedId</code> </td><td style="text-align:left"> ID not found in inflated resource </td></tr>
<tr><td style="text-align:left"> <code>NotificationId0</code> </td><td style="text-align:left"> Notification Id is 0 </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">The Android Gradle plugin now supports having missing baseline files
instead of empty baseline files. Add the experimental flag
<code>android.experimental.lint.missingBaselineIsEmptyBaseline=true</code> in
<code>gradle.properties</code>, and then run the new task <code>updateLintBaseline</code>
to create or update baselines.</li></ul>
<p></p><p>
<strong class="asterisk">7.2</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>AssertionSideEffect</code> </td><td style="text-align:left"> Assertions that have side effects </td></tr>
<tr><td style="text-align:left"> <code>BidiSpoofing</code> </td><td style="text-align:left"> Misleading bidirectional Unicode strings </td></tr>
<tr><td style="text-align:left"> <code>MotionLayoutMissingId</code> </td><td style="text-align:left"> Views inside MotionLayout require an id </td></tr>
<tr><td style="text-align:left"> <code>UastImplementation</code> </td><td style="text-align:left"> Avoid UAST implementation classes </td></tr>
</tbody></table></div>
<p></p><p>
<strong class="asterisk">7.1</strong>
</p><p>
</p><ul>
<li class="asterisk">The various annotation-based checks now perform additional checks for
overloaded Kotlin operators, as well as additional scenarios where
the annotation is inherited from outer classes, super methods, and in
the case of fields, containing classes and packages (this was already
the case for methods). This may show up as new violations in your
codebase, such as the <code>VisibleForTests</code> check flagging additional
usages of test-only APIs outside of tests.
<p></p><p>
</p></li>
<li class="asterisk">New built-in lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>FileEndsWithExt</code> </td><td style="text-align:left"> Flags suspicious usages of File.endsWith(extension) </td></tr>
<tr><td style="text-align:left"> <code>DataExtractionRules</code> </td><td style="text-align:left"> Missing data extraction rules </td></tr>
<tr><td style="text-align:left"> <code>RedundantLabel</code> </td><td style="text-align:left"> Redundant label on activity in manifest </td></tr>
<tr><td style="text-align:left"> <code>DiscouragedApi</code> </td><td style="text-align:left"> Using APIs annotated with @Discouraged </td></tr>
<tr><td style="text-align:left"> <code>ViewBindingType</code> </td><td style="text-align:left"> Validation for <code>tools:viewBindingType</code> </td></tr>
<tr><td style="text-align:left"> <code>AppBundleLocaleChanges</code> </td><td style="text-align:left"> Handling runtime locale changes </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">Updated lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>MissingTranslation</code> </td><td style="text-align:left"> Now checks for missing translations of plurals </td></tr>
<tr><td style="text-align:left"> <code>WrongConstant</code> </td><td style="text-align:left"> Now has quickfixes to replace with constants </td></tr>
<tr><td style="text-align:left"> <code>CheckResult</code> </td><td style="text-align:left"> Now also runs in unit tests </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">Removed lint check <code>MediaCapabilities</code> since its advice is no longer the
recommended practice.</li></ul>
<p></p><p>
<strong class="asterisk">7.0</strong>
</p><p>
</p><ul>
<li class="asterisk">New built-in lint checks:</li></ul>
<p></p><p>
</p><div class="table"><table class="table longtable"><tbody><tr><th style="text-align:left"> Issue ID </th><th style="text-align:left"> Summary </th></tr>
<tr><td style="text-align:left"> <code>AnnotateVersionCheck</code> </td><td style="text-align:left"> Annotate SDK_INT checks </td></tr>
<tr><td style="text-align:left"> <code>CoarseFineLocation</code> </td><td style="text-align:left"> Cannot use <code>ACCESS_FINE_LOCATION</code> without <code>ACCESS_COARSE_LOCATION</code> </td></tr>
<tr><td style="text-align:left"> <code>CustomSplashScreen</code> </td><td style="text-align:left"> Application-defined Launch Screen </td></tr>
<tr><td style="text-align:left"> <code>CustomX509TrustManager</code> </td><td style="text-align:left"> Implements custom TLS trust manager </td></tr>
<tr><td style="text-align:left"> <code>HighSamplingRate</code> </td><td style="text-align:left"> High sensor sampling rate </td></tr>
<tr><td style="text-align:left"> <code>IntentFilterExportedReceiver</code> </td><td style="text-align:left"> Unspecified <code>android:exported</code> in manifest </td></tr>
<tr><td style="text-align:left"> <code>LaunchActivityFromNotification</code> </td><td style="text-align:left"> Notification Launches Services or BroadcastReceivers </td></tr>
<tr><td style="text-align:left"> <code>LeanbackUsesWifi</code> </td><td style="text-align:left"> Using android.hardware.wifi on TV </td></tr>
<tr><td style="text-align:left"> <code>MediaCapabilities</code> </td><td style="text-align:left"> Media Capabilities property not specified </td></tr>
<tr><td style="text-align:left"> <code>NotificationTrampoline</code> </td><td style="text-align:left"> Notification Trampolines </td></tr>
<tr><td style="text-align:left"> <code>NotifyDataSetChanged</code> </td><td style="text-align:left"> Invalidating All RecyclerView Data </td></tr>
<tr><td style="text-align:left"> <code>TileProviderPermissions</code> </td><td style="text-align:left"> TileProvider does not set permission </td></tr>
<tr><td style="text-align:left"> <code>TrustAllX509TrustManager</code> </td><td style="text-align:left"> Insecure TLS/SSL trust manager </td></tr>
<tr><td style="text-align:left"> <code>UnspecifiedImmutableFlag</code> </td><td style="text-align:left"> Missing <code>PendingIntent</code> mutability flag </td></tr>
<tr><td style="text-align:left"> <code>WatchFaceEditor</code> </td><td style="text-align:left"> Watch face editor must use launchMode=“standard” </td></tr>
<tr><td style="text-align:left"> <code>WebViewClientOnReceivedSslError</code> </td><td style="text-align:left"> Proceeds with the HTTPS connection despite SSL errors </td></tr>
<tr><td style="text-align:left"> <code>IntentFilterUniqueDataAttributes</code> </td><td style="text-align:left"> Data tags should only declare unique attributes </td></tr>
</tbody></table></div>
<p></p><p>
</p><ul>
<li class="asterisk">Lint checks now include information for reported incidents where the
lint check came from, such as which library artifact provided it.
This should make it easier to request enhancements or file bugs
around false positives or false negatives.
<p></p><p>
</p></li>
<li class="asterisk">The Gradle plugin now maps the <code>lint</code> task to the default variant's
lint task instead of running it across all variants and accumulating
results. This is much faster, is usually what you want, and now the
target name will not change based on whether the project has product
flavors, so you can start just running <code>./gradlew :app:lint</code> instead
of <code>./gradlew :app:lintDebug</code> or <code>:app:lintProDebug</code> etc.
Furthermore, the <code>lintOptions</code> block is now just named <code>lint</code>
instead.
<p></p><p>
</p></li>
<li class="asterisk">Lint “partial analysis” mode is now integrated in lint.
<p></p><p>
</p></li>
<li class="asterisk">The API check now also looks up operator overloading functions.</li></ul>
<p></p><p>
<strong class="asterisk">4.2</strong>
</p><p>
</p><ul>
<li class="asterisk">Improved support for lint.xml configuration files. You can now
specify lint.xml files in project source folders, where the settings
will apply recursively within just that folder. You can also specify
options for detectors, and enable or disable checks for specific
clients (such as just in Gradle, or just in the IDE, and so on.)
<p></p><p>
</p></li>
<li class="asterisk">Support for SARIF reports; a static analysis report file format
supported by for example GitHub, allowing the results to be
visualized in a unified way on CI servers.</li></ul>
<p></p>
<a class="target" name="lintcommandlintflags"> </a><a class="target" name="lintcommandlintflags"> </a><a class="target" name="toc1"> </a><h1>Lint Command Lint Flags</h1>
<p>
Usage: <code>lint</code> <em class="asterisk">flags</em>
</p><p>
When using lint from within Gradle, see the <a href="#lintgradleplugindsl">Lint Gradle Plugin
DSL</a> options instead.
</p>
<a class="target" name="general"> </a><a class="target" name="lintcommandlintflags/general"> </a><a class="target" name="toc1.1"> </a><h2>General</h2>
<p>
</p><dl><dt><code>--help</code></dt><dd><p> This message.
</p></dd><dt><code>--help</code> <em class="asterisk">topic</em></dt><dd><p> Help on the given topic, such as “suppress”.
</p></dd><dt><code>--list</code></dt><dd><p> List the available issue id's and exit.
</p></dd><dt><code>--version</code></dt><dd><p> Output version information and exit.
</p></dd><dt><code>--exitcode</code></dt><dd><p> Set the exit code to 1 if errors are found.
</p></dd><dt><code>--show</code></dt><dd><p> List available issues along with full explanations.
</p></dd><dt><code>--show</code> <em class="asterisk">ids</em></dt><dd><p> Show full explanations for the given list of issue id's.
</p></dd><dt><code>--generate-docs</code></dt><dd><p> Generates documentation for all the lint checks. This flag cannot be
combined with other lint flags, and it has its own sub-flags. Invoke
on its own to see what they are.
</p></dd><dt><code>--fatalOnly</code></dt><dd><p> Only check for fatal severity issues
</p></dd><dt><code>--apply-suggestions</code></dt><dd><p> Apply suggestions to the source code (for safe fixes)
</p></dd><dt><code>--abort-if-suggestions-applied</code></dt><dd><p> Set the exit code to an error if any fixes are applied
</p></dd><dt><em class="asterisk">directories</em></dt><dd><p> You can also pass in directories for files to be analyzed. This was
common many years ago when project metadata tended to be stored in
simple <code>.classpath</code> files from Eclipse; these days, you typically
will pass it a <code>--lint-model</code> or <code>--project</code> description instead.
</p></dd></dl><p></p>
<a class="target" name="enabledchecks"> </a><a class="target" name="lintcommandlintflags/enabledchecks"> </a><a class="target" name="toc1.2"> </a><h2>Enabled Checks</h2>
<p>
</p><dl><dt><code>--disable</code> <em class="asterisk">list</em></dt><dd><p> Disable the list of categories or specific issue id's. The list
should be a comma-separated list of issue id's or categories.
</p></dd><dt><code>--enable</code> <em class="asterisk">list</em></dt><dd><p> Enable the specific list of issues. This checks all the default
issues plus the specifically enabled issues. The list should be a
comma-separated list of issue id's or categories.
</p></dd><dt><code>--check</code> <em class="asterisk">list</em></dt><dd><p> Only check the specific list of issues. This will disable everything
and re-enable the given list of issues. The list should be a
comma-separated list of issue id's or categories.
</p></dd><dt><code>--fatal</code> <em class="asterisk">list</em></dt><dd><p> Sets the default severity of the given issue to fatal
</p></dd><dt><code>--error</code> <em class="asterisk">list</em></dt><dd><p> Sets the default severity of the given issue to error
</p></dd><dt><code>--warning</code> <em class="asterisk">list</em></dt><dd><p> Sets the default severity of the given issue to warning
</p></dd><dt><code>--info</code> <em class="asterisk">list</em></dt><dd><p> Sets the default severity of the given issue to info
</p></dd><dt><code>-w,</code> —nowarn</dt><dd><p> Only check for errors (ignore warnings)
</p></dd><dt><code>-Wall</code></dt><dd><p> Check all warnings, including those off by default
</p></dd><dt><code>-Werror</code></dt><dd><p> Treat all warnings as errors
</p></dd><dt><code>--config</code> <em class="asterisk">filename</em></dt><dd><p> Use the given configuration file to determine whether issues are
enabled or disabled. If a project contains a lint.xml file, then
this config file will be used as a fallback.
</p></dd><dt><code>--override-config</code> <em class="asterisk">filename</em></dt><dd><p> Like —config, but instead of being a fallback, this configuration
overrides any local configuration files
</p></dd><dt><code>--baseline</code></dt><dd><p> Use (or create) the given baseline file to filter out known issues.
</p></dd><dt><code>--update-baseline</code></dt><dd><p> Updates the baselines even if they already exist
</p></dd><dt><code>--remove-fixed</code></dt><dd><p> Rewrite the baseline files to remove any issues that have been
fixed
</p></dd><dt><code>--write-reference-baseline</code></dt><dd><p> Writes the current results, including issues that were filtered from
the input baseline if any. Does not set the exit code to indicate
that the baseline is created the way —baseline would. Implies
—update-baseline and —continue-after-baseline-created.
</p></dd><dt><code>--missing-baseline-is-empty-baseline</code></dt><dd><p> Treat a missing baseline file as an empty baseline file. In most
cases, this means that if the baseline file does not exist, a new
one will not be created. But in the case when —update-baseline is
also used and there are lint issues, a new baseline file will be
created, and the lint issues will be written to it.
</p></dd><dt><code>--baseline-omit-line-numbers</code></dt><dd><p> Omit line numbers when writing out the baseline file
</p></dd><dt><code>--allow-suppress</code></dt><dd><p> Whether to allow suppressing issues that have been explicitly
registered as not suppressible.
</p></dd><dt><code>--restrict-suppress</code></dt><dd><p> Opposite of —allow-suppress: do not allow suppressing restricted
issues
</p></dd><dt><code>--skip-annotated</code></dt><dd><p> Comma separated list of annotations (by fully qualified name) which
indicate that lint should ignore this compilation unit (only allowed
on top level classes and files)
</p></dd></dl><p></p>
<a class="target" name="outputoptions"> </a><a class="target" name="lintcommandlintflags/outputoptions"> </a><a class="target" name="toc1.3"> </a><h2>Output Options</h2>
<p>
</p><dl><dt><code>--quiet</code></dt><dd><p> Don't show progress.
</p></dd><dt><code>--stacktrace</code></dt><dd><p> Print full stacktrace for internal errors.
</p></dd><dt><code>--fullpath</code></dt><dd><p> Use full paths in the error output.
</p></dd><dt><code>--showall</code></dt><dd><p> Do not truncate long messages, lists of alternate locations, etc.
</p></dd><dt><code>--nolines</code></dt><dd><p> Do not include the source file lines with errors in the output. By
default, the error output includes snippets of source code on the
line containing the error, but this flag turns it off.
</p></dd><dt><code>--html</code> <em class="asterisk">filename</em></dt><dd><p> Create an HTML report instead. If the filename is a directory (or a
new filename without an extension), lint will create a separate
report for each scanned project.
</p></dd><dt><code>--url</code> filepath=url</dt><dd><p> Add links to HTML report, replacing local path prefixes with url
prefix. The mapping can be a comma-separated list of path prefixes
to corresponding URL prefixes, such as
C:\temp\Proj1=<a href="http://buildserver/sources/temp/Proj1" class="url">http://buildserver/sources/temp/Proj1</a>. To turn off
linking to files, use —url none
</p></dd><dt><code>--xml</code> <em class="asterisk">filename</em></dt><dd><p> Create an XML report instead.
</p></dd><dt><code>--sarif</code> <em class="asterisk">filename</em></dt><dd><p> Create a SARIF report instead.
</p></dd><dt><code>--text</code> <em class="asterisk">filename</em></dt><dd><p> Write a text report to the given file. If the filename is just
<code>stdout</code> (short for standard out), the report is written to the
console.
</p></dd></dl><p></p>
<a class="target" name="projectoptions"> </a><a class="target" name="lintcommandlintflags/projectoptions"> </a><a class="target" name="toc1.4"> </a><h2>Project Options</h2>
<p>
</p><dl><table><tbody><tr valign="top"><td><dt><code>--resources</code> <em class="asterisk">dir</em></dt></td><td><dd><p> Add the given folder (or path) as a resource directory for the
project. Only valid when running lint on a single project.
</p></dd></td></tr><tr valign="top"><td><dt><code>--sources</code> <em class="asterisk">dir</em></dt></td><td><dd><p> Add the given folder (or path) as a source directory for the
project. Only valid when running lint on a single project.
</p></dd></td></tr><tr valign="top"><td><dt><code>--classpath</code> <em class="asterisk">dir</em></dt></td><td><dd><p> Add the given folder (or jar file, or path) as a class directory for
the project. Only valid when running lint on a single project.
</p></dd></td></tr><tr valign="top"><td><dt><code>--libraries</code> <em class="asterisk">dir</em></dt></td><td><dd><p> Add the given folder (or jar file, or path) as a class library for
the project. Only valid when running lint on a single project.
</p></dd></td></tr><tr valign="top"><td><dt><code>--compile-sdk-version</code> <em class="asterisk">version</em></dt></td><td><dd><p> Use the given compileSdkVersion to pick an SDK target to resolve
Android API call to
</p></dd></td></tr><tr valign="top"><td><dt><code>--sdk-home</code> <em class="asterisk">dir</em></dt></td><td><dd><p> Use the given SDK instead of attempting to find it relative to the
lint installation or via $ANDROID_SDK_ROOT
</p></dd></td></tr><tr valign="top"><td><dt><code>--jdk-home</code> <em class="asterisk">dir</em></dt></td><td><dd><p> Use the given JDK instead of attempting to find it via $JAVA_HOME or
java.home
</p></dd></td></tr><tr valign="top"><td><dt><code>--java-language-level</code> <em class="asterisk">level</em></dt></td><td><dd><p> Use the given version of the Java programming language
</p></dd></td></tr><tr valign="top"><td><dt><code>--kotlin-language-level</code> <em class="asterisk">level</em></dt></td><td><dd><p> Use the given version of the Kotlin programming language
</p></dd></td></tr></tbody></table></dl><p></p>
<a class="target" name="advancedoptions(forbuildsystemintegration)"> </a><a class="target" name="lintcommandlintflags/advancedoptions(forbuildsystemintegration)"> </a><a class="target" name="toc1.5"> </a><h2>Advanced Options (for build system integration)</h2>
<p>
</p><dl><dt><code>--project</code> <em class="asterisk">file</em></dt><dd><p> Use the given project layout descriptor file to describe the set of
available sources, resources and libraries. Used to drive lint with
build systems not natively integrated with lint.
</p></dd><dt><code>--lint-model</code> <em class="asterisk">path</em></dt><dd><p> Alternative to —project which defines the project layout
</p></dd><dt><code>--variant</code> <em class="asterisk">name</em></dt><dd><p> The name of the variant from the lint model to use for analysis
</p></dd><dt><code>--lint-rule-jars</code> <em class="asterisk">path</em></dt><dd><p> One or more .jar files to load additional lint checks from
</p></dd><dt><code>--analyze-only</code></dt><dd><p> Perform only analysis, not reporting, of the given lint model
</p></dd><dt><code>--report-only</code></dt><dd><p> Perform only reporting of previous analysis results
</p></dd><dt><code>--path-variables</code> <em class="asterisk">variables</em></dt><dd><p> Path variables to use in internal persistence files to make lint
results cacheable. Use a semi-colon separated list of name=path
pairs.
</p></dd><dt><code>--describe-suggestions</code> <em class="asterisk">file</em></dt><dd><p> Describes all the quickfixes in an XML file expressed as document
edits — insert, replace, delete
</p></dd><dt><code>--client-id</code></dt><dd><p> Sets the id of the client, such as “gradle”
</p></dd><dt><code>--client-name</code></dt><dd><p> Sets the display name of the client, such as “Android Gradle
Plugin”
</p></dd><dt><code>--client-version</code></dt><dd><p> Sets the version of the client, such as “7.1.0-alpha01”
</p></dd><dt><code>--offline</code></dt><dd><p> Whether lint should attempt to stay offline
</p></dd></dl><p></p>
<a class="target" name="exitstatus"> </a><a class="target" name="lintcommandlintflags/exitstatus"> </a><a class="target" name="toc1.6"> </a><h2>Exit Status</h2>
<p>
</p><dl><table><tbody><tr valign="top"><td><dt><code>0</code></dt></td><td><dd><p> Success.
</p></dd></td></tr><tr valign="top"><td><dt><code>1</code></dt></td><td><dd><p> Lint errors detected.
</p></dd></td></tr><tr valign="top"><td><dt><code>2</code></dt></td><td><dd><p> Lint usage.
</p></dd></td></tr><tr valign="top"><td><dt><code>3</code></dt></td><td><dd><p> Cannot clobber existing file.
</p></dd></td></tr><tr valign="top"><td><dt><code>4</code></dt></td><td><dd><p> Lint help.
</p></dd></td></tr><tr valign="top"><td><dt><code>5</code></dt></td><td><dd><p> Invalid command-line argument.
</p></dd></td></tr><tr valign="top"><td><dt><code>6</code></dt></td><td><dd><p> A new baseline file was created.
</p></dd></td></tr><tr valign="top"><td><dt><code>7</code></dt></td><td><dd><p> Quickfixes were applied.
</p></dd></td></tr></tbody></table></dl><p></p>
<a class="target" name="lintgradleplugindsl"> </a><a class="target" name="lintgradleplugindsl"> </a><a class="target" name="toc2"> </a><h1>Lint Gradle Plugin DSL</h1>
<p>
Lint is integrated into three Gradle plugins:
</p><p>
The <code>com.android.lint</code> plugin is the “standalone” lint Gradle plugin
which can be applied to any Kotlin or Java Gradle project. To configure
this project, use a <code>lint</code> block to configure it, like this:
</p><pre class="listing tilde"><code><span class="line"></span>apply plugin: 'kotlin'
<span class="line"></span>apply plugin: 'com.android.lint'
<span class="line"></span>
<span class="line"></span>lint {
<span class="line"></span> htmlOutput = file("lint-report.html")
<span class="line"></span> textReport = true
<span class="line"></span>}</code></pre><p>
</p><div class="admonition tip">The lint options block was called <code>lintOptions</code> until 7.0. You can
still refer to it as <code>lintOptions</code>, but this was cleaned up as part
of the Android Gradle Plugin's overhaul of its DSL in 7.0. Another
7.0 change is that the <code>lint</code> task no longer runs lint on all
variants, but just the default variant — so you no longer have to
run <code>:app:lintDebug</code> for example — you can simply run <code>:app:lint</code>.</div>
<p></p><p>
The <code>com.android.library</code> and <code>com.android.application</code> plugins for
Android development bundles in the lint support. They register a lint
task for each variant, as well as a task named <code>lint</code> which runs the
default variant's lint task.
</p><p>
To configure lint for Android, place the <code>lint</code> block within the
<code>android</code> block:
</p><pre class="listing tilde"><code><span class="line"></span>android {
<span class="line"></span> lint {
<span class="line"></span> htmlOutput = file("lint-report.html")
<span class="line"></span> textReport = true
<span class="line"></span> }
<span class="line"></span>}</code></pre>
<a class="target" name="configuringissuesandseverity"> </a><a class="target" name="lintgradleplugindsl/configuringissuesandseverity"> </a><a class="target" name="toc2.1"> </a><h2>Configuring Issues and Severity</h2>
<p>
</p><dl><dt><a name="apiDefinition-ignoreWarnings"></a><code ignore="">ignoreWarnings</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should only report errors. False by default.
</p></dd><dt><a name="apiDefinition-checkAllWarnings"></a><code ignore="">checkAllWarnings</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should check all issues, including those that are marked
off by default. <em class="asterisk">False by default.</em>
</p></dd><dt><a name="apiDefinition-warningsAsErrors"></a><code ignore="">warningsAsErrors</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should treat all warnings as errors. False by default.
</p></dd><dt><a name="apiDefinition-disable"></a><code ignore="">disable</code> <em class="asterisk">issue-list</em></dt><dd><p> List of issue id's that lint should ignore.
</p><p>
Example: <code>disable 'TypographyFractions','TypographyQuotes'</code>.
</p></dd><dt><a name="apiDefinition-enable"></a><code ignore="">enable</code> <em class="asterisk">issue-list</em></dt><dd><p> List of issues disabled by default that lint should enable.
</p><p>
Example: <code>enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'</code>.
</p></dd><dt><a name="apiDefinition-checkOnly"></a><code ignore="">checkOnly</code> <em class="asterisk">issue-list</em></dt><dd><p> If any issues are listed as <a href="#apiDefinition-checkOnly" target="_self"><code>checkOnly</code></a>, then <strong class="asterisk">all</strong> other issues
are disabled and only those specific issues will be analyzed.
</p><p>
Example: <code>checkOnly 'NewApi', 'InlinedApi'</code>.
</p></dd><dt><a name="apiDefinition-fatal"></a><code ignore="">fatal</code> issue-list</dt><dd><p> Sets the severity of the given issues to “fatal” (which means they
will be checked during release builds (even if the lint target is not
included).
</p><p>
Example: <code>fatal 'NewApi', 'InlinedApi'</code>
</p></dd><dt><a name="apiDefinition-error"></a><code ignore="">error</code> issue-list</dt><dd><p> Sets the severity of the given issues to error.
</p><p>
Example: <code>error 'Wakelock', 'TextViewEdits'</code>
</p></dd><dt><a name="apiDefinition-warning"></a><code ignore="">warning</code> issue-list</dt><dd><p> Sets the severity of the given issues to warning.
</p><p>
Example: <code>warning 'ResourceAsColor'</code>
</p></dd><dt><a name="apiDefinition-ignore"></a><code ignore="">ignore</code> issue-list</dt><dd><p> Sets the severity of the given issues to ignore (same as disabling
the check).
</p><p>
Example: <code>ignore 'ResourceAsColor'</code>
</p></dd><dt><a name="apiDefinition-informational"></a><code ignore="">informational</code> issue-list</dt><dd><p> Sets the severity of the given issues to informational, which is
basically a tip.
</p><p>
Example: <code>informational 'StopShip'</code>
</p></dd></dl><p></p>
<a class="target" name="configuringoutputandreports"> </a><a class="target" name="lintgradleplugindsl/configuringoutputandreports"> </a><a class="target" name="toc2.2"> </a><h2>Configuring Output and Reports</h2>
<p>
</p><dl><dt><a name="apiDefinition-absolutePaths"></a><code ignore="">absolutePaths</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should include full paths to files in the error reports.
If false, paths will be made relative to each module directory.
<em class="asterisk">True by default.</em>
</p></dd><dt><a name="apiDefinition-noLines"></a><code ignore="">noLines</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should include showing snippets of the source code along
with underlines to show the line of code containing the problem.
<em class="asterisk">False by default (note the negated name of the flag).</em>
</p></dd><dt><a name="apiDefinition-showAll"></a><code ignore="">showAll</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should show <strong class="asterisk">all</strong> locations (for issues that have
multiple locations, such as showing each duplicate declaration of a
resources), whether it should not truncate lists, etc.
</p></dd><dt><a name="apiDefinition-explainIssues"></a><code ignore="">explainIssues</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should include a full issue explanations paragraphs in
the text error output. Note that this only applies for text reports;
HTML and XML reports will always contain explanations.
<em class="asterisk">False by default.</em>
</p></dd><dt><a name="apiDefinition-textReport"></a><code ignore="">textReport</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should generate a text report. If you don't specify a
location using <a href="#apiDefinition-textOutput" target="_self"><code>textOutput</code></a>, lint will default to
<code>lint-results-</code><em class="asterisk">$variant</em><code>.txt</code> in $module<code>/build/reports/</code>, such as
<code>app/build/reports/lint-results-debug.txt</code>.
</p></dd><dt><a name="apiDefinition-textOutput"></a><code ignore="">textOutput</code> file or <code>'stdout'</code> or <code>'stderr'</code></dt><dd><p> Where lint should write its text output; either a file, or one of
the two magic strings <code>stdout</code> or <code>stderr</code>, which writes to the
standard output or standard error streams respectively. In recent
versions of lint, this will also imply <code>textReport true</code>.
</p><p>
Example: <code>textOutput file(“$buildDir/reports/lint-results.txt”)</code>
</p></dd><dt><a name="apiDefinition-xmlReport"></a><code ignore="">xmlReport</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should generate an XML report. If you don't specify a
location using <code>xmlOutput</code>, lint will default to
<code>lint-results-</code><em class="asterisk">$variant</em><code>.xml</code> in $module<code>/build/reports/</code>, such as
<code>app/build/reports/lint-results-debug.xml</code>.
</p></dd><dt><code>xmlOutput file("$buildDir/reports/lint-report.xml")</code></dt><dd><p> Where lint should write its XML report. In recent versions of lint,
this will also imply <code>xmlReport true</code>.
</p><p>
Example: <code>xmlOutput file("$buildDir/reports/lint-results.xml")</code>
</p></dd><dt><a name="apiDefinition-htmlReport"></a><code ignore="">htmlReport</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should generate an HTML report, with issue explanations,
code snippets, etc. If you don't specify a location using
<a href="#apiDefinition-htmlOutput" target="_self"><code>htmlOutput</code></a>, lint will default to <code>lint-results-</code><em class="asterisk">$variant</em><code>.html</code>
in $module<code>/build/reports/</code>, such as
<code>app/build/reports/lint-results-debug.html</code>.
</p></dd><dt><a name="apiDefinition-htmlOutput"></a><code ignore="">htmlOutput</code> file</dt><dd><p> Where lint should write its HTML report;. In recent versions of lint,
this will also imply <code>htmlReport true</code>. See also the <a href="#appendix:environmentvariablesandsystemproperties">variables
chapter</a> for some flags to configure the HTML
report.
</p><p>
Example: <code>htmlOutput file(“$buildDir/reports/lint-results.html”)</code>
</p></dd><dt><a name="apiDefinition-sarifReport"></a><code ignore="">sarifReport</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should generate a
<a href="https://docs.oasis-open.org/sarif/sarif/v2.0/sarif-v2.0.html">SARIF</a>
report for use by for example GitHub. If you don't specify a location
using <a href="#apiDefinition-sarifOutput" target="_self"><code>sarifOutput</code></a>, lint will default to
<code>lint-results-</code><em class="asterisk">$variant</em><code>.sarif</code> in $module<code>/build/reports/</code>, such as
<code>app/build/reports/lint-results-debug.sarif</code>.
</p></dd><dt><a name="apiDefinition-sarifOutput"></a><code ignore="">sarifOutput</code> file</dt><dd><p> Where lint should write its HTML SARIF. In recent versions of lint,
this will also imply <code>sarifReport true</code>.
</p><p>
Example: <code>sarifOutput file("$buildDir/reports/lint-report.sarif.json")</code>
</p></dd><dt><a name="apiDefinition-quiet"></a><code ignore="">quiet</code> <em class="asterisk">true or false</em></dt><dd><p> Whether lint should limit its diagnostic output. <em class="asterisk">False by default.</em>
</p></dd></dl><p></p>
<a class="target" name="filestoinclude"> </a><a class="target" name="lintgradleplugindsl/filestoinclude"> </a><a class="target" name="toc2.3"> </a><h2>Files to Include</h2>
<p>
</p><dl><dt><a name="apiDefinition-checkGeneratedSources"></a><code ignore="">checkGeneratedSources</code> <em class="asterisk">true or false</em></dt><dd><p> Normally lint will skip generated sources, but you can turn it on
with this flag. <em class="asterisk">False by default.</em>
</p></dd><dt><a name="apiDefinition-checkTestSources"></a><code ignore="">checkTestSources</code> <em class="asterisk">true or false</em></dt><dd><p> Normally most lint checks are not run on test sources (except the
checks dedicated to looking for mistakes in unit or instrumentation
tests, unless ignoreTestSources is true). You can turn on normal lint
checking in all sources with this flag. <em class="asterisk">False by default.</em>
</p></dd><dt><a name="apiDefinition-ignoreTestSources"></a><code ignore="">ignoreTestSources</code> <em class="asterisk">true or false</em></dt><dd><p> Like <a href="#apiDefinition-checkTestSources" target="_self"><code>checkTestSources</code></a>, but tells lint to always skip analyzing
tests — meaning that it also ignores checks that have explicitly
asked to look at test sources, such as the unused resource check.
<em class="asterisk">False by default.</em>
</p></dd><dt><a name="apiDefinition-checkDependencies"></a><code ignore="">checkDependencies</code> <em class="asterisk">true or false</em></dt><dd><p> Normally lint will analyze all dependencies along with each module;
this ensures that lint can correctly (for example) determine if a
resource declared in a library is unused; checking only the library
in isolation would not be able to identify this problem. It also
gives you a single cumulative report for the entire project, which is
easier to digest. However, in older versions of lint this led to
performance problems. <em class="asterisk">False by default, but will soon switch to true
by default.</em>
</p></dd></dl><p></p>
<a class="target" name="other"> </a><a class="target" name="lintgradleplugindsl/other"> </a><a class="target" name="toc2.4"> </a><h2>Other</h2>
<p>
</p><dl><dt><a name="apiDefinition-baseline"></a><code ignore="">baseline</code> file</dt><dd><p> Configures a <a href="#baselines">baseline</a>. The first time lint is
run, and the baseline file does not exist, it will record all the