- Fix: Fix various compatibility issues with Kotlin 2.2+.
- Fix: Fix
ProducerScopepackage in RxObservableEmitDetector. - Build against lint
32.2.1. - Target Kotlin 2.2 (matches lint 32.*).
2025-10-10
- Fix: Allow sealed classes to be Moshi-compatible.
- Fix: Allow primitives in collections to be Moshi-compatible.
- Fix: Allow sealed interfaces to be Moshi-compatible.
- Fix: Allow enums to be Moshi-compatible.
- Update Kotlin to
2.2.10. - Update plugin lint to
8.13.0. - Update dependency gradle to
9.1.0. - Update various build plugins and GitHub Actions.
2025-07-17
- New: Add
CircuitScreenDataClassDetectorcheck to ensure that CircuitScreenclasses are data classes or data objects. - Fix: Enable the
JsonInflaterMoshiCompatibilityDetectorin slack-lint's lint registry. - Fix: Actually fix "You must override visitCallExpression (and don't call super.visitCallExpression!)" error.
- Change: Disable
AlwaysNullReadOnlyVariableDetectorfor now as this was causing the issue above it seems and we haven't had a change to investigate further. - Build against lint
31.12.0-alpha09.
2025-07-14
- Fix "You must override visitCallExpression (and don't call super.visitCallExpression!)" error.
2025-06-30
- New: Add
JsonInflaterMoshiCompatibilityDetectorcheck. This lint is only usable to slack's internal repo. - New: Add
RxObservableEmitDetectorto ensure thatrxObservable/rxFlowablelambda expressions callsend/trySend. - New: Add
AlwaysNullReadOnlyVariableDetectorto lint against read-only variables always initialized to null. - Allow
suspendRetrofit functions to returnUnitif annotated with@AllowUnitResult. - Update lint to
31.12.0-alpha07. - Only test against K2 UAST now.
- Test against Retrofit
3.0.0.
Special thanks to @henni99 for contributing to this release!
2025-03-27
- New: Add
TestParameterSiteTargetcheck to protect against google/TestParameterInjector#49. - New: Add
NullableConcurrentHashMapcheck to protect against putting null keys or values intoConcurrentHashMaps. - Add mockito-kotlin mock/spy functions to default
DoNotMockchecks. - Add
java.util.CalendartoDenyListedApiDetector. - Don't require
ExceptionMessagelint in tests. - Update EitherNet checks to EitherNet 2.0.
- Raise lint registry API version to
16(8.7.0-alpha04). - Build against Kotlin
2.1.20. - Build against lint
31.10.0-alpha03.
Special thanks to @mformetal and @jbduncan for contributing to this release!
2024-10-14
- Enhancement: Handle
@Multipartand@Partannotations in Retrofit lints.
2024-10-03
- Open-source
AvoidUsingNotNullOperator,InflationInItemDecoration, andDoNotCallViewToStringchecks.
2024-10-02
- Enhancement: Tweak explanation for default dispatcher use in rx<->flow interop.
- Enhancement: Switch to stable kotlin-metadata artifact
- Fix: Allow Dagger providers to be called from test sources.
- Build against lint
8.8.0-alpha04. - Update
api/minApito16(Lint 8.7.0+). - Build against Kotlin
2.0.20. - Target Kotlin language version
1.9in lint-checks (imposed by lint),2.0in lint-annotations.
2024-05-03
- Fix
DoNotMockAnythingto usesetEnabledByDefault(false).
2024-05-02
- Add new
DoNotMockAnythingcheck. This is disabled by default. This marks any mock as a lint error. This is useful for enforcing a no-mocks policy in your codebase. - Update lint to
31.5.0-alpha07. - Update to kotlin
1.9.23. - [docs] Expand Mock option explanation for use with multiple issues.
Special thanks to @utwyko for contributing to this release!
2024-03-27
- Add
MustUseNamedParamsDetectorto lint registry. - Update lint to
31.5.0-alpha02. - Target Kotlin API/language version
1.9.
2023-10-27
- Lower lint API back to
31.3.0-alpha05as newer versions targeted kotlin 1.9.20 betas without us realizing it. - Improve explanation for sealed class mock detector to mention that Mockito can't mock them at all in Java 17+.
- Promote
PlatformTypeMockDetectorto error severity. - Make
DenyListedApientries more configurable. Initial change is that blocking APIs are now reported with the IDDenyListedBlockingApi. - Support multiple mock report modes for the
mock-reportoption. Modes areNONE,ERRORS, andALL. Default isNONE. Now the report file isbuild/reports/mockdetector/mock-report.csvand the second column is the severity. This allows reporting all mocks for extra analysis.
2023-10-09
- Enhancement: Add
mock-reportoption toMockDetectors to generate a report of all mocked types in a project. - Update to lint
31.3.0-alpha07.
2023-09-28
- New: Add
ExceptionMessagecheck that ensures that calls tocheck,checkNotNull,require, andrequireNotNullfunctions always include a message. - Enhancement: Add support for custom mock factories and mock annotations to
MockDetector.mock-annotationsis a comma-separated list of mock annotations' fully-qualified names. Default isorg.mockito.Mock,org.mockito.Spy.mock-factoriesis a comma-separated list of mock factories (i.e.org.mockito.Mockito#methodName). Default isorg.mockito.Mockito#mock,org.mockito.Mockito#spy,slack.test.mockito.MockitoHelpers#mock,slack.test.mockito.MockitoHelpersKt#mock.
- Update lint to
31.3.0-alpha05.
Special thanks to @SimonMarquis for contributing to this release!
2023-09-09
- Fix: Allow
@Providesin companion objects of@Moduleclasses.
2023-09-08
- New: Add a bunch more checks around correct usage of Dagger
@Bindsand@Providesmethods. - Fix: Remove
BindsCanBeExtensionFunctionlint as this is prohibited now in Dagger 2.48+. - Update to lint
31.3.0-alpha03. - Update to Kotlin
1.9.10.
2023-07-20
- New: Denylist blocking RxJava 3 operators and coroutines'
runBlockingin favor ofTestObserverandrunTest/Turbine. - New: Denylist coroutines'
runCatching. - New: Denylist
java.util.Date,java.text.DateFormat, andjava.text.SimpleDateFormatin favor ofjava.time.*/kotlin.time.*/etc APIs. - Enhancement: Specifically report denylisted function name only in lint report, not the whole call expression.
- Enhancement: Update kotlinx-metadata to
0.7.0to better support Kotlin 2.0. - Update to lint
31.2.0-alpha13(lint API14).
2023-05-31
- New: Use kotlinx-metadata to parse
Metadataannotations ofPsiCompiledElementtypes to better handle Kotlin language features. Currently used in mock checks and Moshi checks. Please star this issue: https://issuetracker.google.com/issues/283654244. - New: Add DoNotMock check for
objecttypes. - New: Add DoNotMock check for
sealedtypes. Subtypes should be used instead. - New: Add DoNotMock check for
recordtypes. Same motivation as data classes. - New: Add DoNotMock check for platform types (e.g.
java.*,kotlin.*,android.*, their*x.*variants). Prefer real implementations or fakes instead.- This is a big change so this one is just a warning for now.
- Enhancement:
MockDetectorrevamp. All mock checks now run within the same detector to better utilize metadata catching. - Enhancement: Improve mock check location reporting.
- Enhancement: Improve mock check messages to specify the erroring type.
- Enhancement: Add
reasonproperties to@KotlinOnly/@JavaOnlyannotations. - Enhancement: Add more information to the
Vendordetails. - Raise min lint API to
14. - Update kotlin to
1.8.21. Updated language version to this too to match lint. - Update lint to
31.2.0-alpha06.
2023-02-22
- New:
ParcelizeFunctionPropertycheck that errors when a@Parcelizeclass has a function property.
2023-02-09
- Removed: Compose lints have been removed and published in a separate project: https://github.com/slackhq/compose-lints
2023-01-26
- Fix: Improve and fix a number of explanation string formatting in the new compose lints.
2023-01-25
- New: Ported most of the Twitter compose-rules checks to lint. We're packaging them in this project right now, but will likely publish them from a separate repo in the future.
- Target lint-api
31.1.0-alpha01. - Update to Kotlin API version
1.7. Lint8.1.0-alpha01or later is now required. - Modernize various build infra (Kotlin
1.8.0, JDK 19, Gradle 7.6).
2022-11-30
- Fix: Fallback to file package name in
MissingResourceImportAliasDetectorif project package name is null.
2022-11-17
- Initial release on maven central.