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.
@@ -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.&nbsp; 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.&nbsp; This reference makes the instances
259
+ of the class larger, and may keep the reference to the creator object
260
+ alive longer than necessary.&nbsp; 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>