/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/MainActivity.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/tools/Tools$Helper.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/tools/Tools$Other.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/tools/Tools.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/BuildConfig.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/Conversation.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/Message.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/Type.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/User.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/MainViewModel.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/ConversationViewHolder.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/ConversationAdapter.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/ConversationClickListener.class
/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/MainActivity$1.class
/Users/developer/project/sample/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/R.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/7e4b867e2d0f6dea75bcdd697d1f69dd/material-1.3.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/0a4b14c02b458b8b0611f5c4ae8a5d44/constraintlayout-2.0.4-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/683343af73498b739e2b04bcaeaf63e3/appcompat-1.2.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/b68936747c61896fa532975bf0d39b4d/jetified-viewpager2-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/199a4d7295696d0246b6ff0076ca629c/recyclerview-1.1.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/30201beec5d4ef8e01196b5ac791b4b5/fragment-1.1.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/bdaa889975ef518124dc67650cd1f7b8/jetified-appcompat-resources-1.2.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/b7e347f4735e1b77fa91c9511430ac1a/drawerlayout-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/7864b887305f0fe13b89e7ac410b4c2e/coordinatorlayout-1.1.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/d2aa73a80f43aa6f3aec0fa0f0c612e6/viewpager-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/bce97611a2017f226f4f88307637344a/customview-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/572ddfdda97d22fe148eb2e08d685fbf/dynamicanimation-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/8ecbf1470d072d91138ce0211ab550fd/transition-1.2.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/cc24e64fbaa350d257282479bc7c2c56/vectordrawable-animated-1.1.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/9dd0b1ec597ae2718d0ae7bf4aac2744/vectordrawable-1.1.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/c1bfec2c4ec89ddf6f21624150df346a/legacy-support-core-utils-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/42b19e6e8e328e6b377b3b45a32caa8f/loader-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/98b2d5ba374afb2043774f9d2d814cc7/jetified-activity-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/d88d1516fa00724322e40364dd43f4dc/core-1.3.1-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/90ca9d2afbad29b01dc244f61e22d326/cursoradapter-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/1d70eb41c7fe34d5e9d3d0259c721615/versionedparcelable-1.1.0-api.jar
/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/cabcd1a0a7b5c54b0ec6d49828ba0ecc/cardview-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/94486a50fb6342af595f510821233f45/lifecycle-runtime-2.1.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/ebe64895a6d1cc9dd3c7358395ab0491/lifecycle-viewmodel-2.1.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/07e59e7d68a214448e1fde097cea512f/jetified-savedstate-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/22e18bccaf6281e78aed52ece611a147/lifecycle-livedata-2.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/c1f8835cafadf8177e87e2018688fc6c/lifecycle-livedata-core-2.0.0-api.jar
/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/c67e7807d9cd6c329b9d0218b2ec4e505dd340b7/lifecycle-common-2.1.0.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/1fe8b1e4c7213dafd2365c05c73e3350/core-runtime-2.0.0-api.jar
/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/439df125e5eda74c5b0f8a313a540c59/interpolator-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/c68e7aa34aa4c98de5e3ab3926503de4/documentfile-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/ada8a46d2b7afd778ad3731a9d128b0b/localbroadcastmanager-1.0.0-api.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/0b76137a87d9f98bf509cec47c3129f4/print-1.0.0-api.jar
/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar
/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.4/1f001d7db280a89a6c26b26a66eb064bb6d5efeb/constraintlayout-solver-2.0.4.jar
/Users/developer/.gradle/caches/transforms-2/files-2.1/ed4f5e49e34651c5c1122e260888ce62/jetified-annotation-experimental-1.0.0-api.jar
/Users/developer/project/sample/app/src/main/java/com/github/sample/tools/Tools.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/MainActivity.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/model/Message.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/model/Type.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/model/User.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/model/Conversation.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/view/MainViewModel.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/view/ConversationClickListener.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/view/ConversationAdapter.java
/Users/developer/project/sample/app/src/main/java/com/github/sample/view/ConversationViewHolder.java
/Users/developer/project/sample/app/build/generated/source/buildConfig/release/com/github/sample/BuildConfig.java
Possible null pointer dereference
Possible null pointer dereference of MainActivity.conversationAdapter in com.github.sample.MainActivity.onCreate(Bundle)
At MainActivity.java:[lines 13-39]
In class com.github.sample.MainActivity
In method com.github.sample.MainActivity.onCreate(Bundle)
In MainActivity.java
Value contained in com.github.sample.MainActivity.conversationAdapter
Dereferenced at MainActivity.java:[line 29]
Known null at MainActivity.java:[line 29]
Method may return null, but is declared @Nonnull
com.github.sample.model.Message.getProperties() may return null, but is declared @Nonnull
At Message.java:[lines 20-50]
In class com.github.sample.model.Message
In method com.github.sample.model.Message.getProperties()
In Message.java
Value contained in com.github.sample.model.Message.properties
Returned at Message.java:[line 45]
Known null at Message.java:[line 45]
Non-transient non-serializable instance field in serializable class
Class com.github.sample.model.Message defines non-transient non-serializable instance field conversation
At Message.java:[lines 20-50]
In class com.github.sample.model.Message
In Message.java
Field com.github.sample.model.Message.conversation
At Conversation.java:[lines 11-26]
Actual type com.github.sample.model.Conversation
In Message.java
Non-transient non-serializable instance field in serializable class
Class com.github.sample.model.Message defines non-transient non-serializable instance field sender
At Message.java:[lines 20-50]
In class com.github.sample.model.Message
In Message.java
Field com.github.sample.model.Message.sender
At User.java:[lines 11-26]
Actual type com.github.sample.model.User
In Message.java
Possible null pointer dereference
Possible null pointer dereference of Tools$Helper.string in com.github.sample.tools.Tools$Helper.setText(TextView)
At Tools.java:[lines 23-33]
In class com.github.sample.tools.Tools$Helper
In method com.github.sample.tools.Tools$Helper.setText(TextView)
In Tools.java
Value contained in com.github.sample.tools.Tools$Helper.string
Dereferenced at Tools.java:[line 31]
Known null at Tools.java:[line 31]
Read of unwritten field
Read of unwritten field title in com.github.sample.tools.Tools$Helper.setText(TextView)
At Tools.java:[lines 23-33]
In class com.github.sample.tools.Tools$Helper
In method com.github.sample.tools.Tools$Helper.setText(TextView)
In Tools.java
Field com.github.sample.tools.Tools$Helper.title
At Tools.java:[line 32]
Should be a static inner class
Should com.github.sample.tools.Tools$Helper be a _static_ inner class?
At Tools.java:[lines 23-33]
In class com.github.sample.tools.Tools$Helper
At Tools.java:[lines 23-33]
Unwritten field
Unwritten field: com.github.sample.tools.Tools$Helper.title
At Tools.java:[lines 23-33]
In class com.github.sample.tools.Tools$Helper
In Tools.java
Field com.github.sample.tools.Tools$Helper.title
At Tools.java:[line 32]
Should be a static inner class
Should com.github.sample.tools.Tools$Other be a _static_ inner class?
At Tools.java:[lines 15-20]
In class com.github.sample.tools.Tools$Other
At Tools.java:[lines 15-20]
Bad comparison of nonnegative value with negative constant or zero
Bad comparison of nonnegative value with -1 in com.github.sample.view.ConversationAdapter.setConversations(ArrayList)
At ConversationAdapter.java:[lines 9-37]
In class com.github.sample.view.ConversationAdapter
In method com.github.sample.view.ConversationAdapter.setConversations(ArrayList)
Value -1
Return value of java.util.ArrayList.size() of type int
At ConversationAdapter.java:[line 32]
Bad practice
Correctness
Performance
Possible null pointer dereference
There is a branch of statement that, if executed, guarantees that
a null value will be dereferenced, which
would generate a NullPointerException
when the code is executed.
Of course, the problem might be that the branch or statement is infeasible and that
the null pointer exception can't ever be executed; deciding that is beyond the ability of SpotBugs.
]]>
Method may return null, but is declared @Nonnull
This method may return a null value, but the method (or a superclass method
which it overrides) is declared to return @Nonnull.
]]>
Unwritten field
This field is never written. All reads of it will return the default
value. Check for errors (should it have been initialized?), or remove it if it is useless.
]]>
Read of unwritten field
The program is dereferencing a field that does not seem to ever have a non-null value written to it.
Unless the field is initialized via some mechanism not seen by the analysis,
dereferencing this value will generate a null pointer exception.
]]>
Should be a static inner class
This class is an inner class, but does not use its embedded reference
to the object which created it. This reference makes the instances
of the class larger, and may keep the reference to the creator object
alive longer than necessary. If possible, the class should be
made static.
]]>
Non-transient non-serializable instance field in serializable class
This Serializable class defines a non-primitive instance field which is neither transient,
Serializable, or java.lang.Object
, and does not appear to implement
the Externalizable
interface or the
readObject()
and writeObject()
methods.
Objects of this class will not be deserialized correctly if a non-Serializable
object is stored in this field.
]]>
Bad comparison of nonnegative value with negative constant or zero
This code compares a value that is guaranteed to be non-negative with a negative constant or zero.
]]>
Null pointer dereference
Incorrect definition of Serializable class
Unwritten field
Inner class could be made static
Suspicious integer expression
android.app.Activity
android.util.Log
android.view.View
android.widget.TextView