danger-spotbugs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/publish.yml +35 -0
- data/.github/workflows/test.yml +24 -0
- data/.gitignore +4 -0
- data/.rubocop.yml +4835 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +165 -0
- data/Guardfile +19 -0
- data/LICENSE +22 -0
- data/README.md +24 -0
- data/Rakefile +23 -0
- data/danger-spotbugs.gemspec +53 -0
- data/lib/danger_plugin.rb +3 -0
- data/lib/danger_spotbugs.rb +3 -0
- data/lib/spotbugs/entity/bug_instance.rb +51 -0
- data/lib/spotbugs/gem_version.rb +5 -0
- data/lib/spotbugs/plugin.rb +211 -0
- data/spec/entity/bug_instance_spec.rb +153 -0
- data/spec/fixtures/spotbugs_report.xml +346 -0
- data/spec/spec_helper.rb +67 -0
- data/spec/spotbugs_spec.rb +174 -0
- metadata +249 -0
@@ -0,0 +1,153 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
|
5
|
+
module Spotbugs
|
6
|
+
require 'oga'
|
7
|
+
|
8
|
+
describe BugInstance do
|
9
|
+
it 'should initialize with first bug instance' do
|
10
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
11
|
+
bug_instance = BugInstance.new(
|
12
|
+
'/Users/developer/project/sample/',
|
13
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
14
|
+
xml.xpath('//BugInstance')[0]
|
15
|
+
)
|
16
|
+
|
17
|
+
expect(bug_instance.rank).to eq(6)
|
18
|
+
expect(bug_instance.line).to eq(29)
|
19
|
+
expect(bug_instance.type).to eq(:warn)
|
20
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/MainActivity.java')
|
21
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/MainActivity.java')
|
22
|
+
expect(bug_instance.description).to eq('Possible null pointer dereference of MainActivity.conversationAdapter in com.github.sample.MainActivity.onCreate(Bundle)')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should initialize with first bug instance and prefix without trailing file separator' do
|
26
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
27
|
+
bug_instance = BugInstance.new(
|
28
|
+
'/Users/developer/project/sample',
|
29
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
30
|
+
xml.xpath('//BugInstance')[0]
|
31
|
+
)
|
32
|
+
|
33
|
+
expect(bug_instance.rank).to eq(6)
|
34
|
+
expect(bug_instance.line).to eq(29)
|
35
|
+
expect(bug_instance.type).to eq(:warn)
|
36
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/MainActivity.java')
|
37
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/MainActivity.java')
|
38
|
+
expect(bug_instance.description).to eq('Possible null pointer dereference of MainActivity.conversationAdapter in com.github.sample.MainActivity.onCreate(Bundle)')
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should initialize with first bug instance and unknown prefix' do
|
42
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
43
|
+
bug_instance = BugInstance.new(
|
44
|
+
'/Users/unknown',
|
45
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
46
|
+
xml.xpath('//BugInstance')[0]
|
47
|
+
)
|
48
|
+
|
49
|
+
expect(bug_instance.rank).to eq(6)
|
50
|
+
expect(bug_instance.line).to eq(29)
|
51
|
+
expect(bug_instance.type).to eq(:warn)
|
52
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/MainActivity.java')
|
53
|
+
expect(bug_instance.relative_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/MainActivity.java')
|
54
|
+
expect(bug_instance.description).to eq('Possible null pointer dereference of MainActivity.conversationAdapter in com.github.sample.MainActivity.onCreate(Bundle)')
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should initialize with second bug instance' do
|
58
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
59
|
+
bug_instance = BugInstance.new(
|
60
|
+
'/Users/developer/project/sample/',
|
61
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
62
|
+
xml.xpath('//BugInstance')[1]
|
63
|
+
)
|
64
|
+
|
65
|
+
expect(bug_instance.rank).to eq(6)
|
66
|
+
expect(bug_instance.line).to eq(31)
|
67
|
+
expect(bug_instance.type).to eq(:warn)
|
68
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/tools/Tools.java')
|
69
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/tools/Tools.java')
|
70
|
+
expect(bug_instance.description).to eq('Possible null pointer dereference of Tools$Helper.string in com.github.sample.tools.Tools$Helper.setText(TextView)')
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should initialize with third bug instance' do
|
74
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
75
|
+
bug_instance = BugInstance.new(
|
76
|
+
'/Users/developer/project/sample/',
|
77
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
78
|
+
xml.xpath('//BugInstance')[2]
|
79
|
+
)
|
80
|
+
|
81
|
+
expect(bug_instance.rank).to eq(8)
|
82
|
+
expect(bug_instance.line).to eq(32)
|
83
|
+
expect(bug_instance.type).to eq(:warn)
|
84
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/tools/Tools.java')
|
85
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/tools/Tools.java')
|
86
|
+
expect(bug_instance.description).to eq('Read of unwritten field title in com.github.sample.tools.Tools$Helper.setText(TextView)')
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should initialize with fourth bug instance' do
|
90
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
91
|
+
bug_instance = BugInstance.new(
|
92
|
+
'/Users/developer/project/sample/',
|
93
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
94
|
+
xml.xpath('//BugInstance')[3]
|
95
|
+
)
|
96
|
+
|
97
|
+
expect(bug_instance.rank).to eq(18)
|
98
|
+
expect(bug_instance.line).to eq(23)
|
99
|
+
expect(bug_instance.type).to eq(:warn)
|
100
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/tools/Tools.java')
|
101
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/tools/Tools.java')
|
102
|
+
expect(bug_instance.description).to eq('Should com.github.sample.tools.Tools$Helper be a _static_ inner class?')
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should initialize with fifth bug instance' do
|
106
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
107
|
+
bug_instance = BugInstance.new(
|
108
|
+
'/Users/developer/project/sample/',
|
109
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
110
|
+
xml.xpath('//BugInstance')[4]
|
111
|
+
)
|
112
|
+
|
113
|
+
expect(bug_instance.rank).to eq(12)
|
114
|
+
expect(bug_instance.line).to eq(32)
|
115
|
+
expect(bug_instance.type).to eq(:warn)
|
116
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/tools/Tools.java')
|
117
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/tools/Tools.java')
|
118
|
+
expect(bug_instance.description).to eq('Unwritten field: com.github.sample.tools.Tools$Helper.title')
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'should initialize with sixth bug instance' do
|
122
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
123
|
+
bug_instance = BugInstance.new(
|
124
|
+
'/Users/developer/project/sample/',
|
125
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
126
|
+
xml.xpath('//BugInstance')[5]
|
127
|
+
)
|
128
|
+
|
129
|
+
expect(bug_instance.rank).to eq(18)
|
130
|
+
expect(bug_instance.line).to eq(15)
|
131
|
+
expect(bug_instance.type).to eq(:warn)
|
132
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/tools/Tools.java')
|
133
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/tools/Tools.java')
|
134
|
+
expect(bug_instance.description).to eq('Should com.github.sample.tools.Tools$Other be a _static_ inner class?')
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'should initialize with seventh bug instance' do
|
138
|
+
xml = Oga.parse_xml(File.open('spec/fixtures/spotbugs_report.xml'))
|
139
|
+
bug_instance = BugInstance.new(
|
140
|
+
'/Users/developer/project/sample/',
|
141
|
+
xml.xpath('//BugCollection//SrcDir').map(&:text),
|
142
|
+
xml.xpath('//BugInstance')[6]
|
143
|
+
)
|
144
|
+
|
145
|
+
expect(bug_instance.rank).to eq(5)
|
146
|
+
expect(bug_instance.line).to eq(32)
|
147
|
+
expect(bug_instance.type).to eq(:warn)
|
148
|
+
expect(bug_instance.absolute_path).to eq('/Users/developer/project/sample/app/src/main/java/com/github/sample/view/ConversationAdapter.java')
|
149
|
+
expect(bug_instance.relative_path).to eq('app/src/main/java/com/github/sample/view/ConversationAdapter.java')
|
150
|
+
expect(bug_instance.description).to eq('Bad comparison of nonnegative value with -1 in com.github.sample.view.ConversationAdapter.setConversations(ArrayList)')
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,346 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<BugCollection version="4.1.1" sequence="0" timestamp="1616453271149" analysisTimestamp="1616453271213" release="unspecified">
|
4
|
+
<Project projectName="app (spotbugsRelease)">
|
5
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/MainActivity.class</Jar>
|
6
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/tools/Tools$Helper.class</Jar>
|
7
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/tools/Tools$Other.class</Jar>
|
8
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/tools/Tools.class</Jar>
|
9
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/BuildConfig.class</Jar>
|
10
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/Conversation.class</Jar>
|
11
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/Message.class</Jar>
|
12
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/Type.class</Jar>
|
13
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/model/User.class</Jar>
|
14
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/MainViewModel.class</Jar>
|
15
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/ConversationViewHolder.class</Jar>
|
16
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/ConversationAdapter.class</Jar>
|
17
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/view/ConversationClickListener.class</Jar>
|
18
|
+
<Jar>/Users/developer/project/sample/app/build/intermediates/javac/release/classes/com/github/sample/MainActivity$1.class</Jar>
|
19
|
+
<AuxClasspathEntry>/Users/developer/project/sample/app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/release/R.jar</AuxClasspathEntry>
|
20
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/7e4b867e2d0f6dea75bcdd697d1f69dd/material-1.3.0-api.jar</AuxClasspathEntry>
|
21
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/0a4b14c02b458b8b0611f5c4ae8a5d44/constraintlayout-2.0.4-api.jar</AuxClasspathEntry>
|
22
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/683343af73498b739e2b04bcaeaf63e3/appcompat-1.2.0-api.jar</AuxClasspathEntry>
|
23
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/b68936747c61896fa532975bf0d39b4d/jetified-viewpager2-1.0.0-api.jar</AuxClasspathEntry>
|
24
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/199a4d7295696d0246b6ff0076ca629c/recyclerview-1.1.0-api.jar</AuxClasspathEntry>
|
25
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/30201beec5d4ef8e01196b5ac791b4b5/fragment-1.1.0-api.jar</AuxClasspathEntry>
|
26
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/bdaa889975ef518124dc67650cd1f7b8/jetified-appcompat-resources-1.2.0-api.jar</AuxClasspathEntry>
|
27
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/b7e347f4735e1b77fa91c9511430ac1a/drawerlayout-1.0.0-api.jar</AuxClasspathEntry>
|
28
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/7864b887305f0fe13b89e7ac410b4c2e/coordinatorlayout-1.1.0-api.jar</AuxClasspathEntry>
|
29
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/d2aa73a80f43aa6f3aec0fa0f0c612e6/viewpager-1.0.0-api.jar</AuxClasspathEntry>
|
30
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/bce97611a2017f226f4f88307637344a/customview-1.0.0-api.jar</AuxClasspathEntry>
|
31
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/572ddfdda97d22fe148eb2e08d685fbf/dynamicanimation-1.0.0-api.jar</AuxClasspathEntry>
|
32
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/8ecbf1470d072d91138ce0211ab550fd/transition-1.2.0-api.jar</AuxClasspathEntry>
|
33
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/cc24e64fbaa350d257282479bc7c2c56/vectordrawable-animated-1.1.0-api.jar</AuxClasspathEntry>
|
34
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/9dd0b1ec597ae2718d0ae7bf4aac2744/vectordrawable-1.1.0-api.jar</AuxClasspathEntry>
|
35
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/c1bfec2c4ec89ddf6f21624150df346a/legacy-support-core-utils-1.0.0-api.jar</AuxClasspathEntry>
|
36
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/42b19e6e8e328e6b377b3b45a32caa8f/loader-1.0.0-api.jar</AuxClasspathEntry>
|
37
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/98b2d5ba374afb2043774f9d2d814cc7/jetified-activity-1.0.0-api.jar</AuxClasspathEntry>
|
38
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/d88d1516fa00724322e40364dd43f4dc/core-1.3.1-api.jar</AuxClasspathEntry>
|
39
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/90ca9d2afbad29b01dc244f61e22d326/cursoradapter-1.0.0-api.jar</AuxClasspathEntry>
|
40
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/1d70eb41c7fe34d5e9d3d0259c721615/versionedparcelable-1.1.0-api.jar</AuxClasspathEntry>
|
41
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar</AuxClasspathEntry>
|
42
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/cabcd1a0a7b5c54b0ec6d49828ba0ecc/cardview-1.0.0-api.jar</AuxClasspathEntry>
|
43
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/94486a50fb6342af595f510821233f45/lifecycle-runtime-2.1.0-api.jar</AuxClasspathEntry>
|
44
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/ebe64895a6d1cc9dd3c7358395ab0491/lifecycle-viewmodel-2.1.0-api.jar</AuxClasspathEntry>
|
45
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/07e59e7d68a214448e1fde097cea512f/jetified-savedstate-1.0.0-api.jar</AuxClasspathEntry>
|
46
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/22e18bccaf6281e78aed52ece611a147/lifecycle-livedata-2.0.0-api.jar</AuxClasspathEntry>
|
47
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/c1f8835cafadf8177e87e2018688fc6c/lifecycle-livedata-core-2.0.0-api.jar</AuxClasspathEntry>
|
48
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/c67e7807d9cd6c329b9d0218b2ec4e505dd340b7/lifecycle-common-2.1.0.jar</AuxClasspathEntry>
|
49
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/1fe8b1e4c7213dafd2365c05c73e3350/core-runtime-2.0.0-api.jar</AuxClasspathEntry>
|
50
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar</AuxClasspathEntry>
|
51
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/439df125e5eda74c5b0f8a313a540c59/interpolator-1.0.0-api.jar</AuxClasspathEntry>
|
52
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/c68e7aa34aa4c98de5e3ab3926503de4/documentfile-1.0.0-api.jar</AuxClasspathEntry>
|
53
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/ada8a46d2b7afd778ad3731a9d128b0b/localbroadcastmanager-1.0.0-api.jar</AuxClasspathEntry>
|
54
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/0b76137a87d9f98bf509cec47c3129f4/print-1.0.0-api.jar</AuxClasspathEntry>
|
55
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar</AuxClasspathEntry>
|
56
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.4/1f001d7db280a89a6c26b26a66eb064bb6d5efeb/constraintlayout-solver-2.0.4.jar</AuxClasspathEntry>
|
57
|
+
<AuxClasspathEntry>/Users/developer/.gradle/caches/transforms-2/files-2.1/ed4f5e49e34651c5c1122e260888ce62/jetified-annotation-experimental-1.0.0-api.jar</AuxClasspathEntry>
|
58
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/tools/Tools.java</SrcDir>
|
59
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/MainActivity.java</SrcDir>
|
60
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/model/Message.java</SrcDir>
|
61
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/model/Type.java</SrcDir>
|
62
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/model/User.java</SrcDir>
|
63
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/model/Conversation.java</SrcDir>
|
64
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/view/MainViewModel.java</SrcDir>
|
65
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/view/ConversationClickListener.java</SrcDir>
|
66
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/view/ConversationAdapter.java</SrcDir>
|
67
|
+
<SrcDir>/Users/developer/project/sample/app/src/main/java/com/github/sample/view/ConversationViewHolder.java</SrcDir>
|
68
|
+
<SrcDir>/Users/developer/project/sample/app/build/generated/source/buildConfig/release/com/github/sample/BuildConfig.java</SrcDir>
|
69
|
+
</Project>
|
70
|
+
<BugInstance type="NP_NULL_ON_SOME_PATH" priority="1" rank="6" abbrev="NP" category="CORRECTNESS" instanceHash="14f2ef91c09cb234637c3b3ebc9cbce9" instanceOccurrenceNum="0" instanceOccurrenceMax="0" cweid="476">
|
71
|
+
<ShortMessage>Possible null pointer dereference</ShortMessage>
|
72
|
+
<LongMessage>Possible null pointer dereference of MainActivity.conversationAdapter in com.github.sample.MainActivity.onCreate(Bundle)</LongMessage>
|
73
|
+
<Class classname="com.github.sample.MainActivity" primary="true">
|
74
|
+
<SourceLine classname="com.github.sample.MainActivity" start="13" end="39" sourcefile="MainActivity.java" sourcepath="com/github/sample/MainActivity.java">
|
75
|
+
<Message>At MainActivity.java:[lines 13-39]</Message>
|
76
|
+
</SourceLine>
|
77
|
+
<Message>In class com.github.sample.MainActivity</Message>
|
78
|
+
</Class>
|
79
|
+
<Method classname="com.github.sample.MainActivity" name="onCreate" signature="(Landroid/os/Bundle;)V" isStatic="false" primary="true">
|
80
|
+
<SourceLine classname="com.github.sample.MainActivity" start="22" end="39" startBytecode="0" endBytecode="193" sourcefile="MainActivity.java" sourcepath="com/github/sample/MainActivity.java"/>
|
81
|
+
<Message>In method com.github.sample.MainActivity.onCreate(Bundle)</Message>
|
82
|
+
</Method>
|
83
|
+
<Field classname="com.github.sample.MainActivity" name="conversationAdapter" signature="Lcom/github/sample/view/ConversationAdapter;" isStatic="false" primary="true" role="FIELD_CONTAINS_VALUE">
|
84
|
+
<SourceLine classname="com.github.sample.MainActivity" sourcefile="MainActivity.java" sourcepath="com/github/sample/MainActivity.java">
|
85
|
+
<Message>In MainActivity.java</Message>
|
86
|
+
</SourceLine>
|
87
|
+
<Message>Value contained in com.github.sample.MainActivity.conversationAdapter</Message>
|
88
|
+
</Field>
|
89
|
+
<SourceLine classname="com.github.sample.MainActivity" primary="true" start="29" end="29" startBytecode="42" endBytecode="42" sourcefile="MainActivity.java" sourcepath="com/github/sample/MainActivity.java" role="SOURCE_LINE_DEREF">
|
90
|
+
<Message>Dereferenced at MainActivity.java:[line 29]</Message>
|
91
|
+
</SourceLine>
|
92
|
+
<SourceLine classname="com.github.sample.MainActivity" start="29" end="29" startBytecode="34" endBytecode="34" sourcefile="MainActivity.java" sourcepath="com/github/sample/MainActivity.java" role="SOURCE_LINE_KNOWN_NULL">
|
93
|
+
<Message>Known null at MainActivity.java:[line 29]</Message>
|
94
|
+
</SourceLine>
|
95
|
+
</BugInstance>
|
96
|
+
<BugInstance type="NP_NULL_ON_SOME_PATH" priority="1" rank="6" abbrev="NP" category="CORRECTNESS" instanceHash="36d97a1af3badcca6f42173c474917a6" instanceOccurrenceNum="0" instanceOccurrenceMax="0" cweid="476">
|
97
|
+
<ShortMessage>Possible null pointer dereference</ShortMessage>
|
98
|
+
<LongMessage>Possible null pointer dereference of Tools$Helper.string in com.github.sample.tools.Tools$Helper.setText(TextView)</LongMessage>
|
99
|
+
<Class classname="com.github.sample.tools.Tools$Helper" primary="true">
|
100
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="23" end="33" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
101
|
+
<Message>At Tools.java:[lines 23-33]</Message>
|
102
|
+
</SourceLine>
|
103
|
+
<Message>In class com.github.sample.tools.Tools$Helper</Message>
|
104
|
+
</Class>
|
105
|
+
<Method classname="com.github.sample.tools.Tools$Helper" name="setText" signature="(Landroid/widget/TextView;)V" isStatic="false" primary="true">
|
106
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="31" end="33" startBytecode="0" endBytecode="86" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java"/>
|
107
|
+
<Message>In method com.github.sample.tools.Tools$Helper.setText(TextView)</Message>
|
108
|
+
</Method>
|
109
|
+
<Field classname="com.github.sample.tools.Tools$Helper" name="string" signature="Ljava/lang/String;" isStatic="false" primary="true" role="FIELD_CONTAINS_VALUE">
|
110
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
111
|
+
<Message>In Tools.java</Message>
|
112
|
+
</SourceLine>
|
113
|
+
<Message>Value contained in com.github.sample.tools.Tools$Helper.string</Message>
|
114
|
+
</Field>
|
115
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" primary="true" start="31" end="31" startBytecode="7" endBytecode="7" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java" role="SOURCE_LINE_DEREF">
|
116
|
+
<Message>Dereferenced at Tools.java:[line 31]</Message>
|
117
|
+
</SourceLine>
|
118
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="31" end="31" startBytecode="5" endBytecode="5" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java" role="SOURCE_LINE_KNOWN_NULL">
|
119
|
+
<Message>Known null at Tools.java:[line 31]</Message>
|
120
|
+
</SourceLine>
|
121
|
+
</BugInstance>
|
122
|
+
<BugInstance type="NP_UNWRITTEN_FIELD" priority="2" rank="8" abbrev="NP" category="CORRECTNESS" instanceHash="1651fb886d45369f319320730550021a" instanceOccurrenceNum="0" instanceOccurrenceMax="0" cweid="476">
|
123
|
+
<ShortMessage>Read of unwritten field</ShortMessage>
|
124
|
+
<LongMessage>Read of unwritten field title in com.github.sample.tools.Tools$Helper.setText(TextView)</LongMessage>
|
125
|
+
<Class classname="com.github.sample.tools.Tools$Helper" primary="true">
|
126
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="23" end="33" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
127
|
+
<Message>At Tools.java:[lines 23-33]</Message>
|
128
|
+
</SourceLine>
|
129
|
+
<Message>In class com.github.sample.tools.Tools$Helper</Message>
|
130
|
+
</Class>
|
131
|
+
<Method classname="com.github.sample.tools.Tools$Helper" name="setText" signature="(Landroid/widget/TextView;)V" isStatic="false" primary="true">
|
132
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="31" end="33" startBytecode="0" endBytecode="86" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java"/>
|
133
|
+
<Message>In method com.github.sample.tools.Tools$Helper.setText(TextView)</Message>
|
134
|
+
</Method>
|
135
|
+
<Field classname="com.github.sample.tools.Tools$Helper" name="title" signature="Ljava/lang/String;" isStatic="false" primary="true">
|
136
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
137
|
+
<Message>In Tools.java</Message>
|
138
|
+
</SourceLine>
|
139
|
+
<Message>Field com.github.sample.tools.Tools$Helper.title</Message>
|
140
|
+
</Field>
|
141
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" primary="true" start="32" end="32" startBytecode="20" endBytecode="20" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
142
|
+
<Message>At Tools.java:[line 32]</Message>
|
143
|
+
</SourceLine>
|
144
|
+
</BugInstance>
|
145
|
+
<BugInstance type="SIC_INNER_SHOULD_BE_STATIC" priority="2" rank="18" abbrev="SIC" category="PERFORMANCE" instanceHash="fea23dbc6037efb570062f6497bc3927" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
|
146
|
+
<ShortMessage>Should be a static inner class</ShortMessage>
|
147
|
+
<LongMessage>Should com.github.sample.tools.Tools$Helper be a _static_ inner class?</LongMessage>
|
148
|
+
<Class classname="com.github.sample.tools.Tools$Helper" primary="true">
|
149
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="23" end="33" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
150
|
+
<Message>At Tools.java:[lines 23-33]</Message>
|
151
|
+
</SourceLine>
|
152
|
+
<Message>In class com.github.sample.tools.Tools$Helper</Message>
|
153
|
+
</Class>
|
154
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="23" end="33" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java" synthetic="true">
|
155
|
+
<Message>At Tools.java:[lines 23-33]</Message>
|
156
|
+
</SourceLine>
|
157
|
+
</BugInstance>
|
158
|
+
<BugInstance type="UWF_UNWRITTEN_FIELD" priority="2" rank="12" abbrev="UwF" category="CORRECTNESS" instanceHash="a84aadf6a9afc3505ee39b0abfe267c8" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
|
159
|
+
<ShortMessage>Unwritten field</ShortMessage>
|
160
|
+
<LongMessage>Unwritten field: com.github.sample.tools.Tools$Helper.title</LongMessage>
|
161
|
+
<Class classname="com.github.sample.tools.Tools$Helper" primary="true">
|
162
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" start="23" end="33" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
163
|
+
<Message>At Tools.java:[lines 23-33]</Message>
|
164
|
+
</SourceLine>
|
165
|
+
<Message>In class com.github.sample.tools.Tools$Helper</Message>
|
166
|
+
</Class>
|
167
|
+
<Field classname="com.github.sample.tools.Tools$Helper" name="title" signature="Ljava/lang/String;" isStatic="false" primary="true">
|
168
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
169
|
+
<Message>In Tools.java</Message>
|
170
|
+
</SourceLine>
|
171
|
+
<Message>Field com.github.sample.tools.Tools$Helper.title</Message>
|
172
|
+
</Field>
|
173
|
+
<SourceLine classname="com.github.sample.tools.Tools$Helper" primary="true" start="32" end="32" startBytecode="15" endBytecode="15" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
174
|
+
<Message>At Tools.java:[line 32]</Message>
|
175
|
+
</SourceLine>
|
176
|
+
</BugInstance>
|
177
|
+
<BugInstance type="SIC_INNER_SHOULD_BE_STATIC" priority="2" rank="18" abbrev="SIC" category="PERFORMANCE" instanceHash="8073e2e346bb32034a6243cc6ed22a3c" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
|
178
|
+
<ShortMessage>Should be a static inner class</ShortMessage>
|
179
|
+
<LongMessage>Should com.github.sample.tools.Tools$Other be a _static_ inner class?</LongMessage>
|
180
|
+
<Class classname="com.github.sample.tools.Tools$Other" primary="true">
|
181
|
+
<SourceLine classname="com.github.sample.tools.Tools$Other" start="15" end="20" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java">
|
182
|
+
<Message>At Tools.java:[lines 15-20]</Message>
|
183
|
+
</SourceLine>
|
184
|
+
<Message>In class com.github.sample.tools.Tools$Other</Message>
|
185
|
+
</Class>
|
186
|
+
<SourceLine classname="com.github.sample.tools.Tools$Other" start="15" end="20" sourcefile="Tools.java" sourcepath="com/github/sample/tools/Tools.java" synthetic="true">
|
187
|
+
<Message>At Tools.java:[lines 15-20]</Message>
|
188
|
+
</SourceLine>
|
189
|
+
</BugInstance>
|
190
|
+
<BugInstance type="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE" priority="1" rank="5" abbrev="INT" category="CORRECTNESS" instanceHash="277eb5f4e73621ee0491d1161fccc096" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
|
191
|
+
<ShortMessage>Bad comparison of nonnegative value with negative constant or zero</ShortMessage>
|
192
|
+
<LongMessage>Bad comparison of nonnegative value with -1 in com.github.sample.view.ConversationAdapter.setConversations(ArrayList)</LongMessage>
|
193
|
+
<Class classname="com.github.sample.view.ConversationAdapter" primary="true">
|
194
|
+
<SourceLine classname="com.github.sample.view.ConversationAdapter" start="9" end="37" sourcefile="ConversationAdapter.java" sourcepath="com/github/sample/view/ConversationAdapter.java">
|
195
|
+
<Message>At ConversationAdapter.java:[lines 9-37]</Message>
|
196
|
+
</SourceLine>
|
197
|
+
<Message>In class com.github.sample.view.ConversationAdapter</Message>
|
198
|
+
</Class>
|
199
|
+
<Method classname="com.github.sample.view.ConversationAdapter" name="setConversations" signature="(Ljava/util/ArrayList;)V" isStatic="false" primary="true">
|
200
|
+
<SourceLine classname="com.github.sample.view.ConversationAdapter" start="32" end="37" startBytecode="0" endBytecode="109" sourcefile="ConversationAdapter.java" sourcepath="com/github/sample/view/ConversationAdapter.java"/>
|
201
|
+
<Message>In method com.github.sample.view.ConversationAdapter.setConversations(ArrayList)</Message>
|
202
|
+
</Method>
|
203
|
+
<Int value="-1" role="INT_VALUE">
|
204
|
+
<Message>Value -1</Message>
|
205
|
+
</Int>
|
206
|
+
<Method classname="java.util.ArrayList" name="size" signature="()I" isStatic="false" role="METHOD_RETURN_VALUE_OF">
|
207
|
+
<SourceLine classname="java.util.ArrayList" start="282" end="282" startBytecode="0" endBytecode="28" sourcefile="ArrayList.java" sourcepath="java/util/ArrayList.java"/>
|
208
|
+
<Message>Return value of java.util.ArrayList.size() of type int</Message>
|
209
|
+
</Method>
|
210
|
+
<SourceLine classname="com.github.sample.view.ConversationAdapter" primary="true" start="32" end="32" startBytecode="5" endBytecode="5" sourcefile="ConversationAdapter.java" sourcepath="com/github/sample/view/ConversationAdapter.java">
|
211
|
+
<Message>At ConversationAdapter.java:[line 32]</Message>
|
212
|
+
</SourceLine>
|
213
|
+
</BugInstance>
|
214
|
+
<BugCategory category="CORRECTNESS">
|
215
|
+
<Description>Correctness</Description>
|
216
|
+
</BugCategory>
|
217
|
+
<BugCategory category="PERFORMANCE">
|
218
|
+
<Description>Performance</Description>
|
219
|
+
</BugCategory>
|
220
|
+
<BugPattern type="NP_NULL_ON_SOME_PATH" abbrev="NP" category="CORRECTNESS">
|
221
|
+
<ShortDescription>Possible null pointer dereference</ShortDescription>
|
222
|
+
<Details><![CDATA[
|
223
|
+
|
224
|
+
<p> There is a branch of statement that, <em>if executed,</em> guarantees that
|
225
|
+
a null value will be dereferenced, which
|
226
|
+
would generate a <code>NullPointerException</code> when the code is executed.
|
227
|
+
Of course, the problem might be that the branch or statement is infeasible and that
|
228
|
+
the null pointer exception can't ever be executed; deciding that is beyond the ability of SpotBugs.
|
229
|
+
</p>
|
230
|
+
|
231
|
+
]]></Details>
|
232
|
+
</BugPattern>
|
233
|
+
<BugPattern type="UWF_UNWRITTEN_FIELD" abbrev="UwF" category="CORRECTNESS">
|
234
|
+
<ShortDescription>Unwritten field</ShortDescription>
|
235
|
+
<Details><![CDATA[
|
236
|
+
|
237
|
+
<p> This field is never written. All reads of it will return the default
|
238
|
+
value. Check for errors (should it have been initialized?), or remove it if it is useless.</p>
|
239
|
+
|
240
|
+
]]></Details>
|
241
|
+
</BugPattern>
|
242
|
+
<BugPattern type="NP_UNWRITTEN_FIELD" abbrev="NP" category="CORRECTNESS">
|
243
|
+
<ShortDescription>Read of unwritten field</ShortDescription>
|
244
|
+
<Details><![CDATA[
|
245
|
+
|
246
|
+
<p> The program is dereferencing a field that does not seem to ever have a non-null value written to it.
|
247
|
+
Unless the field is initialized via some mechanism not seen by the analysis,
|
248
|
+
dereferencing this value will generate a null pointer exception.
|
249
|
+
</p>
|
250
|
+
|
251
|
+
]]></Details>
|
252
|
+
</BugPattern>
|
253
|
+
<BugPattern type="SIC_INNER_SHOULD_BE_STATIC" abbrev="SIC" category="PERFORMANCE">
|
254
|
+
<ShortDescription>Should be a static inner class</ShortDescription>
|
255
|
+
<Details><![CDATA[
|
256
|
+
|
257
|
+
<p> This class is an inner class, but does not use its embedded reference
|
258
|
+
to the object which created it. This reference makes the instances
|
259
|
+
of the class larger, and may keep the reference to the creator object
|
260
|
+
alive longer than necessary. If possible, the class should be
|
261
|
+
made static.
|
262
|
+
</p>
|
263
|
+
|
264
|
+
]]></Details>
|
265
|
+
</BugPattern>
|
266
|
+
<BugPattern type="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE" abbrev="INT" category="CORRECTNESS">
|
267
|
+
<ShortDescription>Bad comparison of nonnegative value with negative constant or zero</ShortDescription>
|
268
|
+
<Details><![CDATA[
|
269
|
+
|
270
|
+
<p> This code compares a value that is guaranteed to be non-negative with a negative constant or zero.
|
271
|
+
</p>
|
272
|
+
|
273
|
+
]]></Details>
|
274
|
+
</BugPattern>
|
275
|
+
<BugCode abbrev="NP" cweid="476">
|
276
|
+
<Description>Null pointer dereference</Description>
|
277
|
+
</BugCode>
|
278
|
+
<BugCode abbrev="UwF">
|
279
|
+
<Description>Unwritten field</Description>
|
280
|
+
</BugCode>
|
281
|
+
<BugCode abbrev="SIC">
|
282
|
+
<Description>Inner class could be made static</Description>
|
283
|
+
</BugCode>
|
284
|
+
<BugCode abbrev="INT">
|
285
|
+
<Description>Suspicious integer expression</Description>
|
286
|
+
</BugCode>
|
287
|
+
<Errors errors="0" missingClasses="4">
|
288
|
+
<MissingClass>android.app.Activity</MissingClass>
|
289
|
+
<MissingClass>android.util.Log</MissingClass>
|
290
|
+
<MissingClass>android.view.View</MissingClass>
|
291
|
+
<MissingClass>android.widget.TextView</MissingClass>
|
292
|
+
</Errors>
|
293
|
+
<FindBugsSummary timestamp="Mon, 22 Mar 2021 23:47:51 +0100" total_classes="14" referenced_classes="231" total_bugs="7" total_size="172" num_packages="4" java_version="1.8.0_242-release" vm_version="25.242-b3-6915495" cpu_seconds="22.84" clock_seconds="2.65" peak_mbytes="224.15" alloc_mbytes="455.50" gc_seconds="0.14" priority_2="4" priority_1="3">
|
294
|
+
<FileStats path="com/github/sample/BuildConfig.java" bugCount="0" size="10"/>
|
295
|
+
<FileStats path="com/github/sample/MainActivity.java" bugCount="1" size="23" bugHash="3d4de8c5d2e5bc77cb5db28779c6c525"/>
|
296
|
+
<FileStats path="com/github/sample/model/Conversation.java" bugCount="0" size="16"/>
|
297
|
+
<FileStats path="com/github/sample/model/Message.java" bugCount="0" size="20"/>
|
298
|
+
<FileStats path="com/github/sample/model/Type.java" bugCount="0" size="11"/>
|
299
|
+
<FileStats path="com/github/sample/model/User.java" bugCount="0" size="16"/>
|
300
|
+
<FileStats path="com/github/sample/tools/Tools.java" bugCount="5" size="25" bugHash="f4054acc9c26c5455b8a4dbd032c7b07"/>
|
301
|
+
<FileStats path="com/github/sample/view/ConversationAdapter.java" bugCount="1" size="19" bugHash="7f51758a280a8478b184c14ebff307d8"/>
|
302
|
+
<FileStats path="com/github/sample/view/ConversationClickListener.java" bugCount="0" size="2"/>
|
303
|
+
<FileStats path="com/github/sample/view/ConversationViewHolder.java" bugCount="0" size="15"/>
|
304
|
+
<FileStats path="com/github/sample/view/MainViewModel.java" bugCount="0" size="15"/>
|
305
|
+
<PackageStats package="com.github.sample" total_bugs="1" total_types="3" total_size="33" priority_1="1">
|
306
|
+
<ClassStats class="com.github.sample.BuildConfig" sourceFile="BuildConfig.java" interface="false" size="10" bugs="0"/>
|
307
|
+
<ClassStats class="com.github.sample.MainActivity" sourceFile="MainActivity.java" interface="false" size="16" bugs="1" priority_1="1"/>
|
308
|
+
<ClassStats class="com.github.sample.MainActivity$1" sourceFile="MainActivity.java" interface="false" size="7" bugs="0"/>
|
309
|
+
</PackageStats>
|
310
|
+
<PackageStats package="com.github.sample.model" total_bugs="0" total_types="4" total_size="63">
|
311
|
+
<ClassStats class="com.github.sample.model.Conversation" sourceFile="Conversation.java" interface="false" size="16" bugs="0"/>
|
312
|
+
<ClassStats class="com.github.sample.model.Message" sourceFile="Message.java" interface="false" size="20" bugs="0"/>
|
313
|
+
<ClassStats class="com.github.sample.model.Type" sourceFile="Type.java" interface="false" size="11" bugs="0"/>
|
314
|
+
<ClassStats class="com.github.sample.model.User" sourceFile="User.java" interface="false" size="16" bugs="0"/>
|
315
|
+
</PackageStats>
|
316
|
+
<PackageStats package="com.github.sample.tools" total_bugs="5" total_types="3" total_size="25" priority_2="4" priority_1="1">
|
317
|
+
<ClassStats class="com.github.sample.tools.Tools" sourceFile="Tools.java" interface="false" size="7" bugs="0"/>
|
318
|
+
<ClassStats class="com.github.sample.tools.Tools$Helper" sourceFile="Tools.java" interface="false" size="10" bugs="4" priority_2="3" priority_1="1"/>
|
319
|
+
<ClassStats class="com.github.sample.tools.Tools$Other" sourceFile="Tools.java" interface="false" size="8" bugs="1" priority_2="1"/>
|
320
|
+
</PackageStats>
|
321
|
+
<PackageStats package="com.github.sample.view" total_bugs="1" total_types="4" total_size="51" priority_1="1">
|
322
|
+
<ClassStats class="com.github.sample.view.ConversationAdapter" sourceFile="ConversationAdapter.java" interface="false" size="19" bugs="1" priority_1="1"/>
|
323
|
+
<ClassStats class="com.github.sample.view.ConversationClickListener" sourceFile="ConversationClickListener.java" interface="true" size="2" bugs="0"/>
|
324
|
+
<ClassStats class="com.github.sample.view.ConversationViewHolder" sourceFile="ConversationViewHolder.java" interface="false" size="15" bugs="0"/>
|
325
|
+
<ClassStats class="com.github.sample.view.MainViewModel" sourceFile="MainViewModel.java" interface="false" size="15" bugs="0"/>
|
326
|
+
</PackageStats>
|
327
|
+
<FindBugsProfile>
|
328
|
+
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine" totalMilliseconds="315" invocations="1076" avgMicrosecondsPerInvocation="293" maxMicrosecondsPerInvocation="20284" standardDeviationMicrosecondsPerInvocation="1002"/>
|
329
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.FindNoSideEffectMethods" totalMilliseconds="228" invocations="231" avgMicrosecondsPerInvocation="990" maxMicrosecondsPerInvocation="17010" standardDeviationMicrosecondsPerInvocation="2209"/>
|
330
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.FieldItemSummary" totalMilliseconds="208" invocations="231" avgMicrosecondsPerInvocation="902" maxMicrosecondsPerInvocation="14783" standardDeviationMicrosecondsPerInvocation="1877"/>
|
331
|
+
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.bcel.MethodGenFactory" totalMilliseconds="164" invocations="43" avgMicrosecondsPerInvocation="3828" maxMicrosecondsPerInvocation="158335" standardDeviationMicrosecondsPerInvocation="23841"/>
|
332
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.EqualsOperandShouldHaveClassCompatibleWithThis" totalMilliseconds="131" invocations="231" avgMicrosecondsPerInvocation="570" maxMicrosecondsPerInvocation="109141" standardDeviationMicrosecondsPerInvocation="7163"/>
|
333
|
+
<ClassProfile name="edu.umd.cs.findbugs.OpcodeStack$JumpInfoFactory" totalMilliseconds="107" invocations="362" avgMicrosecondsPerInvocation="296" maxMicrosecondsPerInvocation="4988" standardDeviationMicrosecondsPerInvocation="423"/>
|
334
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.NoteDirectlyRelevantTypeQualifiers" totalMilliseconds="78" invocations="231" avgMicrosecondsPerInvocation="340" maxMicrosecondsPerInvocation="6802" standardDeviationMicrosecondsPerInvocation="765"/>
|
335
|
+
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.ClassDataAnalysisEngine" totalMilliseconds="70" invocations="1080" avgMicrosecondsPerInvocation="65" maxMicrosecondsPerInvocation="1086" standardDeviationMicrosecondsPerInvocation="60"/>
|
336
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.CalledMethods" totalMilliseconds="66" invocations="231" avgMicrosecondsPerInvocation="289" maxMicrosecondsPerInvocation="7028" standardDeviationMicrosecondsPerInvocation="763"/>
|
337
|
+
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.bcel.JavaClassAnalysisEngine" totalMilliseconds="66" invocations="293" avgMicrosecondsPerInvocation="225" maxMicrosecondsPerInvocation="16463" standardDeviationMicrosecondsPerInvocation="1003"/>
|
338
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.BuildObligationPolicyDatabase" totalMilliseconds="54" invocations="231" avgMicrosecondsPerInvocation="236" maxMicrosecondsPerInvocation="4381" standardDeviationMicrosecondsPerInvocation="456"/>
|
339
|
+
<ClassProfile name="edu.umd.cs.findbugs.util.TopologicalSort" totalMilliseconds="46" invocations="903" avgMicrosecondsPerInvocation="51" maxMicrosecondsPerInvocation="1384" standardDeviationMicrosecondsPerInvocation="108"/>
|
340
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.FunctionsThatMightBeMistakenForProcedures" totalMilliseconds="39" invocations="231" avgMicrosecondsPerInvocation="172" maxMicrosecondsPerInvocation="3428" standardDeviationMicrosecondsPerInvocation="398"/>
|
341
|
+
<ClassProfile name="edu.umd.cs.findbugs.detect.OverridingEqualsNotSymmetrical" totalMilliseconds="38" invocations="231" avgMicrosecondsPerInvocation="167" maxMicrosecondsPerInvocation="9114" standardDeviationMicrosecondsPerInvocation="640"/>
|
342
|
+
</FindBugsProfile>
|
343
|
+
</FindBugsSummary>
|
344
|
+
<ClassFeatures></ClassFeatures>
|
345
|
+
<History></History>
|
346
|
+
</BugCollection>
|