- Added inlay hints for vararg array allocation
- Shortening pathData when rewriting
- Fix upcast hints confusing variadic argument with lambda parameter
- Vector pathData error correction when trimming relative commands
- IDEA 2024.1 compatibility
- Use IntelliJ
ColorPicker
instead of Android one, resolves #57 - Skip KDoc/comments when folding backing property
- Fix
Color.parseColor("cyan")
mistakenly rendered yellow (copy-paste error, he-he) - Report that
<layer-list><item android:gravity>
requires API 23 - Android Studio Hedgehog and Iguana compatibility (someone please tell Google that I'm tired with their zoo)
BigDecimal|BigInteger
constant inspection: full number parsing (e.g. "0" = "0000.0000" = "0e10") and Java 9'sBigInteger.TWO
constant support- Removed “Nullable argument to string concatenation” because of false-positives
- Stopped reporting
AnyEnum.values()
calls in non-static context, leave this to Kotlin team and their newAnyEnum.entries
feature - Reporting
new OkHttpClient()
in “Allocation should be cached” inspection (and not reportingGson.Builder()
, it could be configured somehow) - Previewing even less opaque colors, >= 0x19 instead of > 0x27, useful for Ripple
- Don't showing useless interface hints for anonymous classes
- Reporting heavyweight property delegation for
var
s, not onlyval
s - Stop logging errors on
R.styleable
when trying to find un-sorted styled attributes - Stop reporting empty layer-list on LayerList subclasses like Ripple
- Stop reporting absent
getConstantState()
for Java type variables
- Added live templates for implementing
Property
forObjectAnimator
- Reporting that
Activity#onCreate(, PersistableBundle)
will highly likely not be called - Reporting that
<AnyScrollableView>
should have an ID to save its scroll position
- Inspecting more drawable types
- Reporting Drawable classes without getConstantState()
- Eliminated some false-positives on useless fillColor/Alpha, strokeWidth/Color/Alpha
- Vector underdraw detection ((sub-)path adds nothing to the image)
- Suggest merging sibling vector path and clip-path pathData
- Unhidden interface hints from IDE settings
- Added color picker
- Moved from Trove to fastutil, fixes crash on new IDE builds
- Reworked upcast hints, fixes various bugs
- Not showing override hints for single-interface anonymous classes
- Fixed trimming tails in
pathData
for floats with exponent - Fixed crash when parsing
pathData
which is incomplete or starts with spaces/linebreaks/etc - Fixed handling overdraw of clipped paths
- Reporting that
RecyclerView.setOnClickListener
is unsupported; stopped mistakenly reportingVideoView.setOnTouchListener
- Quickfix for removing empty vector sub-path and fixing the following relative moveTo command
- Quickfix for splitting
<path>
tag - Live templates for SVG and Android Vector Drawable pathData
- Suggest merging (layout_margin|padding)(Left|Top|Right|Bottom|Start|End) pairs into (Horizontal|Vertical) even for SDK<22 (without highlight though)
- Showing a quickfix for inlining layer-list only if on-the-fly to force conscious choice
- UselessResElement: merging intersecting sub-path into single to support “donut hole” effect
- Added inspection about programmatic
GradientDrawable
(a.k.a.<shape>
) attribute application order - Support comparison operators when reporting `Big(Integer|Decimal).compareTo(ZERO)`
- Fixed binary incompatibility with Android Studio Chipmunk | 2021.2.1 Patch 1
- Reporting unsorted arrays passed to
obtainStyledAttributes
- Relaxed warning on “useless” layer-lists: they may actually behave differently than insets
- Fallen back to standard introduceConstantHandler when suggesting fix for uncached allocations inspection due to incompatibility with IU-222.2270.31 (2022.2 (eap)) (may not work for Kotlin)
- When pasting colors in Kotlin, adding
.toInt()
only if necessary - When detecting vector
<group>
usefulness, looking at successors, not siblings
- Fix reflective property replacement search when name is capitalized
- More compact backing property folding
- Suggest merging (layout_margin|padding)(Left|Top|Right|Bottom|Start|End) pairs into (Horizontal|Vertical)
- Fix clip-path application order in UselessResourceElement
- Split vector paths and report useless sub-paths separately
- Skip Java keywords in Kotlin declaration if its container is not exposed
- Fix interface upcast hints after last fix
- Fix vector path optimizations: don't let numbers stick together when optimizing -0.01 to 0
- Reporting Kotlin Android Extensions imports as deprecated
- Reporting overridden attributes in (layout_margin|padding)(|Left|Top|Right|Bottom|Start|End|Horizontal|Vertical)
- Added “Boxed primitive array allocation” inspection
- Reworked Reflective Property Animation inspection with various fixes
- Vector drawable analysis: better accuracy when detecting emptiness, fix crash on bad paths, add resource resolution, fix trimming accuracy
- Fix crash due to absent libcore
- Fix interface upcast inlay hints for lambda argument outside of parentheses
- Detecting empty and single-item animation sets
- Fixed Kotlin upcast hints for extension functions and named arguments
- Added backing property folding for Kotlin
- Added “Android utility methods should be replaced with Kotlin extension” inspection
- Improved vector drawable inspection: reporting paths fully overdrawn by other paths
- Numerous quickfix quality fixes: shorten references, reformat etc
- “Function won't be inlined” inspection made disabled by default
- “This allocation should be cached” inspection provides “Introduce constant” quickfix for Kotlin
- Reporting `VideoView.setOnClickListener` which has no sense before Android API 26
- Marked ConstantParseColor, ReflectPropAnimInspection, TargetApiInspection as cleanup tools
- Added uselessDrawableElement inspection for Android
- More accurate and less annoying UncachedAlloc inspection
- Implemented Kotlin upcast hints. Reworked interface inlay hints so their settings reside with their colleagues
- Transforming colors from CSS (#RRGGBB, #RRGGBBAA, rgb[a](r, g, b[, a])) to 0xAARRGGBB on paste
- “Kotlin identifier is a Java keyword”: detecting keywords in a package directive
- Android: reporting use of
container
parameter inAnyDialogFragment.onCreateView
which is always null - BigDecimalConstant, BigDecimalSignum: BigInteger and Kotlin support, inspection description
- Fixed crashes in ConcatNullable and inline/noinline function inspections
- Override hints: showing FunctionN as
(…) -> …
(without actual type arguments, LOL) - More sensitive main interface detection heuristic for hints
- Fixed WrongStateAttr for negative states
- Gutter colors: improved performance and preview accuracy, added preview for
@ColorInt
constant references - Added folding of int literals which suspected to be colors
- Removed XML-related inspections superseded by Android Lint:
<bitmap tintMode
, “<view class="@resource or ?themeAttribute">
is not supported” - Improved accuracy of “Nullable argument to String concatenation”, less false-positives
- Added settings to disable upcast or override hints
- Fixed NoSuchMethodError in ReflectPropAnimException
- Added Android inspection: state attribute expected
- Added Android inspection:
parseColor(with constant string)
- Added gutter icon: ColorInt preview
- Fixed crash in TargetApiInspection
- Added Kotlin inspection: “Nullable argument to string concatenation”
- Stopped reporting “identifier is Java keyword” for functions with reified type parameters
- Added BadCyrillicRegexp inspection
- Shut up false-positive KtInlineFunctionLeaksAnonymousDeclaration
- Less severity of ktNoinlineFunc for :: which are gonna be optimized
- Added Android inspection:
<view class="@resource or ?themeAttribute">
is not supported
- Kotlin identifier is Java keyword: ignoring props with normal getter-setter, looking into
@JvmName
of getter-setter
- added minSdk check for
layout=?attr inspection
- Added inspection for
<bitmap tint=
- fixed noinline function inspection to ignore return type
- added quickfix to UncachedAlloc inspection
- Upgraded main interface inference heuristic for override hints
- migrate off deprecated API in EditorCustomElementRenderer by Dmitry Batrak
- property animation quickfix for Kotlin
- Less noise from KtNoinlineFuncInspection and UpcastHints
- Added Java+Kotlin hints for interface method overrides
- uncachedEnumValues inspection becomes uncachedAlloc and also detects
new Gson()
@TargetApi
quickfix now adds imports in Java- Caught up property delegation inspection with Kotlin 1.3.60
- Added android inspection: Use of reflective ObjectAnimator/PropertyValuesHolder
- Upcast hints made less noisy
- Enum.values() without caching inspection supported for Kotlin files
- Added Android inspection:
@TargetApi
should be replaced with@RequiresApi
- Added Java hints for upcast to interface
- Added Java inspection: BigDecimal instantiation can be replaced with constant by stokito
- Added Java inspection:
BigDecimal.compareTo(ZERO)
can be replaced with signum() by stokito - Android plugin dependency made optional
- Fixed NPE in “Atomic as volatile” inspection
- “Kotlin declaration name is Java keyword” now inspects only declarations, also checks whether they are public to Java
- “Kotlin identifier is Java keyword”: added
@JvmName
support
- Added UAST inspection: Atomic can be replaced with volatile
- Added UAST inspection: Calling Enum values() without caching
- Added Kotlin inspection: Property delegation
- Added Kotlin inspection: Declaration name is Java keyword
- Added Kotlin inspection: Inline function leaks anonymous declaration
- Added Kotlin inspection: Function won't be inlined; noinline callable references are a bit more expensive than noinline lambdas; function cannot be inlined if it is a receiver of an extension function
- Added Android inspection:
<include layout="?themeAttribute">