Last Msg First Msg
























method com.dmdirc.plugins.PluginInfo$1__static_init










method int compareTo(Object)
preinit'ed(this.metaData)
prex0 != null
preinit'ed(x0.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on getNiceName
unanalyzedcall on toString
unanalyzedcall on java.lang.String:compareTo

method ResourceManager access$002(PluginInfo, ResourceManager)
prex0 != null
postreturn_value == x1
postinit'ed(return_value)
postx0.myResourceManager == return_value










method com.dmdirc.plugins.PluginInfo__static_init
postinit'ed(LOGGER)










method void com.dmdirc.plugins.PluginInfo(URL)









  call too complex - analysis skippedInfocall on void com.dmdirc.plugins.PluginInfo(URL, bool)











method void com.dmdirc.plugins.PluginInfo(URL, bool)
preurl != null
presumptioncom.dmdirc.updater.Version:isValid(...)@153 == 1
presumptioncom.dmdirc.util.resourcemanager.ResourceManager:get ResourcesStartingWith(...)@174 != null
presumptioncom.dmdirc.util.resourcemanager.ResourceManager:res ourceExists(...)@169 == 1
presumptionjava.lang.String:isEmpty(...)@156 == 0
presumptionjava.lang.String:isEmpty(...)@159 == 0
presumptionjava.lang.String:isEmpty(...)@162 == 0
presumptionjava.util.Iterator:next(...)@174 != null
postjava.lang.StringBuilder:toString(...)._tainted == 0
postthis.children == &new ArrayList(PluginInfo#3)
postinit'ed(this.classloader)
postthis.exports == &new HashMap(PluginInfo#4)
postinit'ed(this.filename)
postinit'ed(this.isLoading)
postthis.lastError == &"No Error"
postthis.metaData in Addr_Set{null,&new ConfigFile(getConfigFile#1),&new ConfigFile(getMigratedConfigFile#1),&new ConfigFile(getConfigFile#1),&new ConfigFile(getMigratedConfigFile#1)}
postinit'ed(this.migrated)
postthis.myClasses == &new ArrayList(PluginInfo#1)
postinit'ed(this.myResourceManager)
postinit'ed(this.plugin)
postthis.provides == &new ArrayList(PluginInfo#2)
postthis.requirementsError in Addr_Set{&"", &java.lang.StringBuilder:toString(...), &java.lang.StringBuilder:toString(...)}
postinit'ed(this.tempLoaded)
postthis.url == url
postthis.url != null
postnew ArrayList(PluginInfo#1) num objects == 1
postnew ArrayList(PluginInfo#2) num objects == 1
postnew ArrayList(PluginInfo#3) num objects == 1
postnew HashMap(PluginInfo#4) num objects == 1
postnew ConfigFile(getConfigFile#1) num objects <= 1
postnew ConfigFile(getMigratedConfigFile#1) num objects <= 1
unanalyzedcall on java.util.Properties:getProperty
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.String:split
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.String:matches
unanalyzedcall on java.io.File
unanalyzedcall on java.io.File:exists
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.lang.String:substring
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on checkPlugins
unanalyzedcall on checkServices
unanalyzedcall on getPluginInfoByName
unanalyzedcall on com.dmdirc.updater.Version
unanalyzedcall on com.dmdirc.updater.Version:compareTo
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.util.logging.Logger:finer
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on java.util.List:size
unanalyzedcall on getServicesByType
unanalyzedcall on java.util.List:get
unanalyzedcall on isActive
unanalyzedcall on getService
unanalyzedcall on activate
unanalyzedcall on com.dmdirc.config.IdentityManager:getAddonI dentity
unanalyzedcall on java.util.Map:entrySet
unanalyzedcall on java.util.Set:iterator
unanalyzedcall on java.util.Map$Entry:getKey
unanalyzedcall on java.lang.Object:toString
unanalyzedcall on java.util.Map$Entry:getValue
unanalyzedcall on com.dmdirc.config.Identity:setOption
unanalyzedcall on java.util.Map:put
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceInputStream
unanalyzedcall on com.dmdirc.util.ConfigFile
unanalyzedcall on java.util.Properties
unanalyzedcall on java.util.Properties:load
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Properties:containsKey
unanalyzedcall on java.util.Properties:entrySet
unanalyzedcall on com.dmdirc.util.ConfigFile:addDomain
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:resourceExists
unanalyzedcall on com.dmdirc.util.ConfigFile:read
unanalyzedcall on java.io.IOException
unanalyzedcall on java.lang.Exception
test_vectorload: {1}, {0}
test_vectorjava.io.File:delete(...)@118: {0}, {1}
test_vectorjava.io.File:exists(...)@118: {0}, {1}
test_vectorjava.lang.String:matches(...)@176: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@174: {0}, {1}









Prev Msg Next Msg
  conditional throw
Low Prob.
check that this.metaData != null
Prev Msg Next Msg










  method not available - call not analyzedInfocall on bool com.dmdirc.updater.Version:isValid()










Prev Msg Next Msg
  null dereference
Medium Prob.
check that getAuthor(...) != null
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that getName(...) != null
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that getMainClass(...) != null
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that getMainClass(...) != null
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that res != null
  method not available - call not analyzedInfocall on bool com.dmdirc.util.resourcemanager. ResourceManager:resourceExists(String)
Prev Msg Next Msg










  method not available - call not analyzedInfocall on List com.dmdirc.util.resourcemanager. ResourceManager:getResourcesStartingWith(String)










  call too complex - analysis skippedInfocall on void loadEntirePlugin()










Prev Msg Next Msg
  conditional throw
Medium Prob.
check that checkRequirements(...) != 0
Prev Msg Next Msg










  call too complex - analysis skippedInfocall on void updateProvides()











method String getMetaInfo(Properties, String[], String)
premetainfo != null
premetainfo.length <= 232-1
pre(soft) init'ed(metainfo[...])
pre(soft) properties != null
postinit'ed(return_value)
test_vectorjava.util.Properties:getProperty(...)@204: Addr_Set{null}, Inverse{null}










method ConfigFile getMigratedConfigFile()
preinit'ed(this.myResourceManager)
pre(soft) this.url != null
presumptionjava.util.Iterator:next(...)@266 != null
presumptionjava.util.Map_Entry:getKey(...)@267 != null
presumptionjava.util.Map_Entry:getValue(...)@268 != null
presumptionjava.util.Properties:entrySet(...)@266 != null
postreturn_value == &amp;new ConfigFile(getMigratedConf igFile#1)
postthis.migrated == 1
postnew ConfigFile(getMigratedConfigFile#1) num objects == 1
postthis.myResourceManager != null
unanalyzedcall on java.util.Properties:getProperty
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
test_vectorjava.lang.String:startsWith(...)@275: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@266: {0}, {1}
test_vectorjava.util.Properties:containsKey(...)@238: {0}, {1}
test_vectorjava.util.Properties:containsKey(...)@241: {0}, {1}
test_vectorjava.util.Properties:containsKey(...)@252: {0}, {1}
test_vectorjava.util.Properties:containsKey(...)@257: {0}, {1}
test_vectorjava.util.Properties:containsKey(...)@261: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that res != null
  method not available - call not analyzedInfocall on InputStream com.dmdirc.util. resourcemanager.ResourceManager:getResourceInputStr eam(String)
  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile(InputStream )
Prev Msg Next Msg










  method not available - call not analyzedInfocall on InputStream com.dmdirc.util. resourcemanager.ResourceManager:getResourceInputStr eam(String)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, Map)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, Map)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, Map)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, Map)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, Map)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, List)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, List)










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:addDomain(S tring, List)











method ConfigFile getConfigFile()
preinit'ed(this.myResourceManager)
pre(soft) this.url != null
presumptioncom.dmdirc.util.resourcemanager.ResourceManager:res ourceExists(...)@306 == 1
postreturn_value in Addr_Set{null,&amp;new ConfigFile(getMigratedConfigFile#1),&amp;new ConfigFile(getConfigFile#1),&amp;new ConfigFile(getMigratedConfigFile#1)}
postpossibly_updated(this.migrated)
postthis.myResourceManager != null
postnew ConfigFile(getConfigFile#1) num objects <= 1
postnew ConfigFile(getMigratedConfigFile#1) num objects <= 1
unanalyzedcall on java.util.Properties:getProperty
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.lang.String:substring
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Set:iterator
unanalyzedcall on java.util.Map$Entry:getKey
unanalyzedcall on java.lang.Object:toString
unanalyzedcall on java.util.Map$Entry:getValue
unanalyzedcall on java.util.Map:put
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceInputStream
unanalyzedcall on com.dmdirc.util.ConfigFile
unanalyzedcall on java.util.Properties
unanalyzedcall on java.util.Properties:load
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Properties:containsKey
unanalyzedcall on java.util.Properties:entrySet
unanalyzedcall on com.dmdirc.util.ConfigFile:addDomain
test_vectorcom.dmdirc.util.resourcemanager.ResourceManager:res ourceExists(...)@301: {0}, {1}
test_vectorcom.dmdirc.util.resourcemanager.ResourceManager:res ourceExists(...)@312: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that res != null
  method not available - call not analyzedInfocall on bool com.dmdirc.util.resourcemanager. ResourceManager:resourceExists(String)
Prev Msg Next Msg










  method not available - call not analyzedInfocall on InputStream com.dmdirc.util. resourcemanager.ResourceManager:getResourceInputStr eam(String)
  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile(InputStream )










  method not available - call not analyzedInfocall on void com.dmdirc.util.ConfigFile:read()










  method not available - call not analyzedInfocall on bool com.dmdirc.util.resourcemanager. ResourceManager:resourceExists(String)










  method not available - call not analyzedInfocall on bool com.dmdirc.util.resourcemanager. ResourceManager:resourceExists(String)











method void getDefaults()
preinit'ed(this.metaData)
presumptioncom.dmdirc.config.IdentityManager:getAddonIdentity( ...)@325 != null
presumptioncom.dmdirc.util.ConfigFile:getKeyDomain(...)@331 != null
presumptioncom.dmdirc.util.ConfigFile:getKeyDomain(...)@342 != null
presumptioncom.dmdirc.util.ConfigFile:getKeyDomain(...)@353 != null
presumptionjava.util.Iterator:next(...)@333 != null
presumptionjava.util.Iterator:next(...)@344 != null
presumptionjava.util.Iterator:next(...)@355 != null
presumptionjava.util.Map:entrySet(...)@333 != null
presumptionjava.util.Map:entrySet(...)@344 != null
presumptionjava.util.Map:entrySet(...)@355 != null
presumptionjava.util.Map_Entry:getKey(...)@334 != null
presumptionjava.util.Map_Entry:getKey(...)@345 != null
presumptionjava.util.Map_Entry:getKey(...)@356 != null
presumptionjava.util.Map_Entry:getValue(...)@335 != null
presumptionjava.util.Map_Entry:getValue(...)@346 != null
presumptionjava.util.Map_Entry:getValue(...)@357 != null
presumptionjava.util.logging.Logger:getLogger(...)@52 != null
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
test_vectorthis.metaData: Inverse{null}, Addr_Set{null}
test_vectorcom.dmdirc.util.ConfigFile:isKeyDomain(...)@330: {0}, {1}
test_vectorcom.dmdirc.util.ConfigFile:isKeyDomain(...)@341: {0}, {1}
test_vectorcom.dmdirc.util.ConfigFile:isKeyDomain(...)@352: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@333: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@344: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@355: {0}, {1}









  method not available - call not analyzedInfocall on Identity com.dmdirc.config.IdentityManager: getAddonIdentity()










  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isKeyDomain (String)










  method not available - call not analyzedInfocall on Map com.dmdirc.util.ConfigFile:getKeyDomain (String)










  method not available - call not analyzedInfocall on void com.dmdirc.config.Identity:setOption(S tring, String, String)










  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isKeyDomain (String)










  method not available - call not analyzedInfocall on Map com.dmdirc.util.ConfigFile:getKeyDomain (String)










  method not available - call not analyzedInfocall on void com.dmdirc.config.Identity:setOption(S tring, String, String)










  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isKeyDomain (String)










  method not available - call not analyzedInfocall on Map com.dmdirc.util.ConfigFile:getKeyDomain (String)










  method not available - call not analyzedInfocall on void com.dmdirc.config.Identity:setOption(S tring, String, String)











method void updateProvides()
prethis.metaData != null
prethis.provides != null
pre(soft) init'ed(com/dmdirc/plugins/PluginManager. me)
presumptiongetPluginManager(...).services != null
presumptionjava.util.Iterator:next(...)@371 != null
presumptionjava.util.Iterator:next(...)@379 != null
presumptionservice.serviceproviders@371 != null
presumptionservice.serviceproviders@385 != null
postinit'ed(com/dmdirc/plugins/PluginManager.me)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postinit'ed(new HashMap(PluginManager#2) num objects)
postinit'ed(new Hashtable(PluginManager#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1). pluginInfo)
postinit'ed(new PluginManager(getPluginManager#1) num objects)
postinit'ed(new PluginManager(getPluginManager#1). knownPlugins)
postinit'ed(new PluginManager(getPluginManager#1). myDir)
postinit'ed(new PluginManager(getPluginManager#1). services)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos
unanalyzedcall on java.util.List:add
test_vectorcom.dmdirc.util.ConfigFile:getFlatDomain(...)@377: Addr_Set{null}, Inverse{null}
test_vectorjava.lang.String:equalsIgnoreCase(...)@384: {1}, {0}
test_vectorjava.util.Iterator:hasNext(...)@371: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@379: {0}, {1}









  method not available - call not analyzedInfocall on List com.dmdirc.util.ConfigFile:getFlatDoma in(String)










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(bits.length)
Prev Msg Next Msg










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(bits.length)
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that not_init'ed(name)
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that service != null
Prev Msg Next Msg










  call too complex - analysis skippedInfocall on void updateExports()











method void pluginUpdated()
pre(soft) init'ed(this.metaData)
pre(soft) this.myClasses != null
pre(soft) this.url != null
presumptioncom.dmdirc.util.resourcemanager.ResourceManager:get ResourcesStartingWith(...)@405 != null
presumptionjava.util.Iterator:next(...)@405 != null
postthis.metaData == One-of{&amp;new ConfigFile(getConf igFile#1), &amp;new ConfigFile(getMigratedConfigFil e#1), null, old this.metaData}
postinit'ed(this.metaData)
postpossibly_updated(this.migrated)
postpossibly_updated(this.myResourceManager)
postnew ConfigFile(getConfigFile#1) num objects <= 1
postnew ConfigFile(getMigratedConfigFile#1) num objects <= 1
unanalyzedcall on java.util.Properties:getProperty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.lang.String:substring
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.logging.Logger:finer
unanalyzedcall on com.dmdirc.config.IdentityManager:getAddonI dentity
unanalyzedcall on java.util.Map:entrySet
unanalyzedcall on java.util.Set:iterator
unanalyzedcall on java.util.Map$Entry:getKey
unanalyzedcall on java.lang.Object:toString
unanalyzedcall on java.util.Map$Entry:getValue
unanalyzedcall on com.dmdirc.config.Identity:setOption
unanalyzedcall on getConfigFile
unanalyzedcall on java.util.Map:put
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceInputStream
unanalyzedcall on com.dmdirc.util.ConfigFile
unanalyzedcall on java.util.Properties
unanalyzedcall on java.util.Properties:load
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Properties:containsKey
unanalyzedcall on java.util.Properties:entrySet
unanalyzedcall on com.dmdirc.util.ConfigFile:addDomain
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:resourceExists
unanalyzedcall on com.dmdirc.util.ConfigFile:read
unanalyzedcall on java.io.IOException
test_vectorjava.lang.String:matches(...)@407: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@405: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that res != null
  method not available - call not analyzedInfocall on List com.dmdirc.util.resourcemanager. ResourceManager:getResourcesStartingWith(String)
Prev Msg Next Msg










  call too complex - analysis skippedInfocall on void updateProvides()











method bool isMigrated()
preinit'ed(this.migrated)
postreturn_value == this.migrated
postinit'ed(return_value)










method bool updateMetaData()
pre(soft) init'ed(this.myResourceManager)
pre(soft) this.url != null
postinit'ed(return_value)
postthis.metaData == One-of{&amp;new ConfigFile(getConf igFile#1), &amp;new ConfigFile(getMigratedConfigFil e#1), null, old this.metaData}
postpossibly_updated(this.migrated)
postinit'ed(this.myResourceManager)
postnew ConfigFile(getConfigFile#1) num objects <= 1
postnew ConfigFile(getMigratedConfigFile#1) num objects <= 1
unanalyzedcall on java.util.Properties:getProperty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.lang.String:substring
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Set:iterator
unanalyzedcall on java.util.Map$Entry:getKey
unanalyzedcall on java.lang.Object:toString
unanalyzedcall on java.util.Map$Entry:getValue
unanalyzedcall on java.util.Map:put
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceInputStream
unanalyzedcall on com.dmdirc.util.ConfigFile
unanalyzedcall on java.util.Properties
unanalyzedcall on java.util.Properties:load
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Properties:containsKey
unanalyzedcall on java.util.Properties:entrySet
unanalyzedcall on com.dmdirc.util.ConfigFile:addDomain
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:resourceExists
unanalyzedcall on com.dmdirc.util.ConfigFile:read
unanalyzedcall on java.io.IOException









Prev Msg Next Msg
  unused assignment
Low Prob.
Unused assignment into res
Prev Msg Next Msg











method String getRequirementsError()
preinit'ed(this.requirementsError)
postreturn_value == this.requirementsError
postinit'ed(return_value)










method ResourceManager getResourceManager()
preinit'ed(this.myResourceManager)
pre(soft) this.url != null
postinit'ed(return_value)
postthis.myResourceManager == return_value
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule










method ResourceManager getResourceManager(bool)
preinit'ed(this.myResourceManager)
pre(soft) this.url != null
postinit'ed(return_value)
postthis.myResourceManager == return_value
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.TimerTask
test_vectorforceNew: {0}, {1}









  method not available - call not analyzedInfocall on ResourceManager com.dmdirc.util. resourcemanager.ResourceManager:getResourceManager( String)











method void com.dmdirc.plugins.PluginInfo$1(PluginInfo)










method void run()










method bool checkMinimumVersion(String, int)
predesired != null
postinit'ed(return_value)
postthis.requirementsError == One-of{old this.requirementsError, &amp;"'minversion' is a non-integer", &amp;"Plugin is for a newer version of DMDirc"}
test_vectoractual: {-231..0}, {1..232-2}
test_vectorjava.lang.Integer:parseInt(...)@510: {-231..0}, {2..232-1}
test_vectorjava.lang.String:isEmpty(...)@505: {0}, {1}










method bool checkMaximumVersion(String, int)
predesired != null
postinit'ed(return_value)
postthis.requirementsError == One-of{old this.requirementsError, &amp;"'maxversion' is a non-integer", &amp;"Plugin is for an older version of DMDirc"}
test_vectoractual: {-231..0}, {2..232-1}
test_vectorjava.lang.Integer:parseInt(...)@544: {-231..0}, {1..232-2}
test_vectorjava.lang.String:isEmpty(...)@539: {0}, {1}










method bool checkOS(String, String, String, String)
predesired != null
pre(soft) actualName != null
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postinit'ed(return_value)
postthis.requirementsError == One-of{old this.requirementsError, &amp;java.lang. StringBuilder:toString(...)}
test_vectorjava.lang.String:isEmpty(...)@573: {0}, {1}
test_vectorjava.lang.String:matches(...)@579: {1}, {0}









Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(desiredParts.length)
Prev Msg Next Msg










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(desiredParts.length)
Prev Msg Next Msg










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(desiredParts.length)
  test always goes same way
Low Prob.
Test predetermined because desiredParts.length == 0
  dead code
Low Prob.
Dead code here because desiredParts.length == 0
Prev Msg Next Msg










  dead code continuesInfoDead code continues










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(desiredParts.length)
  test always goes same way
Low Prob.
Test predetermined because desiredParts.length == 0
  dead code
Low Prob.
Dead code here because desiredParts.length == 0
Prev Msg Next Msg










  dead code continuesInfoDead code continues











method bool checkUI(String, String)
predesired != null
pre(soft) actual != null
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postinit'ed(return_value)
postthis.requirementsError == One-of{old this.requirementsError, &amp;java.lang. StringBuilder:toString(...)}
test_vectorjava.lang.String:isEmpty(...)@606: {0}, {1}
test_vectorjava.lang.String:matches(...)@610: {1}, {0}










method bool checkFiles(String)
predesired != null
postjava.lang.StringBuilder:toString(...)._tainted == 0
postreturn_value == 1
postthis.requirementsError == One-of{old this.requirementsError, &amp;java.lang. StringBuilder:toString(...)}
test_vectorjava.lang.String:isEmpty(...)@630: {0}, {1}









Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(arr$.length)
  use of default init
Low Prob.
check if init'ed(len$)
  test always goes same way
Low Prob.
Test predetermined because i$ == len$
  dead code
Low Prob.
Dead code here because i$ == len$
  dead code continuesInfoDead code continues
Prev Msg Next Msg










  dead code continuesInfoDead code continues
  dead code continuesInfoDead code continues
  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues











method bool checkPlugins(String)
predesired != null
postpossibly_updated(com/dmdirc/plugins/PluginManager. me)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postreturn_value == 1
postthis.requirementsError == One-of{old this.requirementsError, &amp;java.lang. StringBuilder:toString(...)}
postnew HashMap(PluginManager#2) num objects == 0
postnew Hashtable(PluginManager#1) num objects == 0
postnew PluginClassLoader(getSubClassLoader#1) num objects == 0
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == null
postnew PluginManager(getPluginManager#1) num objects == 0
postinit'ed(new PluginManager(getPluginManager#1). knownPlugins)
postinit'ed(new PluginManager(getPluginManager#1). myDir)
postinit'ed(new PluginManager(getPluginManager#1). services)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on getPluginInfoByName
unanalyzedcall on com.dmdirc.updater.Version
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos
test_vectorjava.lang.String:isEmpty(...)@665: {0}, {1}









Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(arr$.length)
  use of default init
Low Prob.
check if init'ed(len$)
  test always goes same way
Low Prob.
Test predetermined because i$ == len$
  dead code
Low Prob.
Dead code here because i$ == len$
  dead code continuesInfoDead code continues
Prev Msg Next Msg










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues











method bool checkRequirements(bool)
preinit'ed(this.metaData)
presumptionjava.lang.System:getProperty(...)@720 != null
postjava.lang.StringBuilder:toString(...)._tainted == 0
postinit'ed(return_value)
postthis.requirementsError == One-of{old this.requirementsError, &amp;java.lang. StringBuilder:toString(...)}
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.lang.String:split
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.String:matches
unanalyzedcall on java.io.File
unanalyzedcall on java.io.File:exists
test_vectorpreliminary: {1}, {0}
test_vectorthis.metaData: Inverse{null}, Addr_Set{null}
test_vectorcheckPlugins(...)@720: {0}, {1}
test_vectorcheckServices(...)@720: {1}, {0}









Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/plugins/PluginInfo.checkOS: desired != null
  precondition failure
Medium Prob.
com/dmdirc/plugins/PluginInfo.checkFiles: desired != null
  test always goes same way
Low Prob.
Test predetermined because checkFiles(...) == 1
  call too complex - analysis skippedInfocall on bool checkPlugins(String)
  method not available - call not analyzedInfocall on List com.dmdirc.util.ConfigFile:getFlatDoma in(String)
  call too complex - analysis skippedInfocall on bool checkServices(List)
Prev Msg Next Msg











method bool checkServices(List)
pre(soft) init'ed(com/dmdirc/plugins/PluginManager. me)
presumptiongetPluginManager(...).services != null
presumptionjava.util.Iterator:next(...)@743 != null
presumptionjava.util.List:get(...)@755 != null
postinit'ed(com/dmdirc/plugins/PluginManager.me)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postinit'ed(return_value)
postinit'ed(new HashMap(PluginManager#2) num objects)
postinit'ed(new Hashtable(PluginManager#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
postinit'ed(new PluginManager(getPluginManager#1) num objects)
postinit'ed(new PluginManager(getPluginManager#1). knownPlugins)
postinit'ed(new PluginManager(getPluginManager#1). myDir)
postinit'ed(new PluginManager(getPluginManager#1). services)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on updateProvides
unanalyzedcall on checkRequirements
unanalyzedcall on loadRequired
unanalyzedcall on onLoad
unanalyzedcall on getName
unanalyzedcall on java.lang.Throwable:getMessage
unanalyzedcall on addError
unanalyzedcall on unloadPlugin
unanalyzedcall on getMainClass
unanalyzedcall on loadClass
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on loadPlugin
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on isActive
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos
unanalyzedcall on activateServices
test_vectorservices: Addr_Set{null}, Inverse{null}
test_vectorjava.lang.String:equalsIgnoreCase(...)@751: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@743: {0}, {1}
test_vectorjava.util.List:size(...)@741: {1..232-1}, {-231..0}









Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(bits.length)
Prev Msg Next Msg










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(bits.length)
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that not_init'ed(name)
Prev Msg Next Msg










Prev Msg Next Msg
  unused assignment
Low Prob.
Unused assignment into serv
Prev Msg Next Msg










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(available)
Prev Msg Next Msg











method bool isActive()
preinit'ed(this.plugin)
pre(soft) init'ed(this.tempLoaded)
postinit'ed(return_value)










method void activateServices()
pre(soft) init'ed(this.plugin)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postthis.isLoading == old this.isLoading
postthis.lastError == old this.lastError
postthis.tempLoaded == old this.tempLoaded









  call too complex - analysis skippedInfocall on void loadPlugin()











method String getProviderName()
preinit'ed(this.metaData)
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postreturn_value == &amp;java.lang.StringBuilder:toStri ng(...)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method List getServices()
postreturn_value == &amp;new ArrayList(getServices#1)
postnew ArrayList(getServices#1) num objects == 1










method bool isLoaded()
preinit'ed(this.plugin)
pre(soft) init'ed(this.tempLoaded)
postinit'ed(return_value)










method bool isTempLoaded()
preinit'ed(this.plugin)
pre(soft) init'ed(this.tempLoaded)
postinit'ed(return_value)










method void loadEntirePlugin()
pre(soft) init'ed(this.plugin)
prethis.myClasses != null
pre(soft) init'ed(com/dmdirc/plugins/GlobalClassLoader .me)
pre(soft) init'ed(this.classloader)
postcom/dmdirc/plugins/GlobalClassLoader.me == old com/dmdirc/plugins/GlobalClassLoader.me
postjava.lang.StringBuilder:toString(...)._tainted == 0
postthis.classloader == old this.classloader
postthis.isLoading == old this.isLoading
postthis.lastError == old this.lastError
postthis.plugin == old this.plugin
postthis.plugin.domainSet == old this.plugin.domainSet
postthis.plugin.myDomain == old this.plugin.myDomain
postthis.tempLoaded == old this.tempLoaded
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects == undefined
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects == 0, if init'ed
postnew HashMap(GlobalClassLoader#1) num objects == new GlobalClassLoader(getGlobalClassLoader#1) num objects
postnew PluginClassLoader(getSubClassLoader#1) num objects == new GlobalClassLoader(getGlobalClassLoa der#1) num objects
postnew PluginClassLoader(loadClass#1) num objects == new GlobalClassLoader(getGlobalClassLoader#1) num objects
postnew GlobalClassLoader(getGlobalClassLoader#1). resourcesList == undefined
postnew GlobalClassLoader(getGlobalClassLoader#1). resourcesList == null
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == new GlobalClassLoader(getGlobalClassL oader#1).resourcesList
postnew PluginClassLoader(loadClass#1).pluginInfo == new GlobalClassLoader(getGlobalClassLoader#1). resourcesList
test_vectorjava.util.Iterator:hasNext(...)@837: {0}, {1}









  call too complex - analysis skippedInfocall on void loadPlugin()










  call too complex - analysis skippedInfocall on void loadClass(String)











method void loadPluginTemp()
postjava.lang.StringBuilder:toString(...)._tainted == 0
postthis.isLoading == old this.isLoading
postthis.lastError == old this.lastError
postthis.tempLoaded == 1









  call too complex - analysis skippedInfocall on void loadPlugin()











method void loadRequired()
preinit'ed(this.metaData)
postpossibly_updated(com/dmdirc/plugins/PluginManager. me)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postnew HashMap(PluginManager#2) num objects == 0
postnew Hashtable(PluginManager#1) num objects == 0
postnew PluginClassLoader(getSubClassLoader#1) num objects == 0
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
postnew PluginManager(getPluginManager#1) num objects == 0
postinit'ed(new PluginManager(getPluginManager#1). knownPlugins)
postinit'ed(new PluginManager(getPluginManager#1). myDir)
postinit'ed(new PluginManager(getPluginManager#1). services)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on updateProvides
unanalyzedcall on checkRequirements
unanalyzedcall on loadRequired
unanalyzedcall on onLoad
unanalyzedcall on getName
unanalyzedcall on java.lang.Throwable:getMessage
unanalyzedcall on addError
unanalyzedcall on unloadPlugin
unanalyzedcall on getMainClass
unanalyzedcall on loadClass
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on loadPlugin
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos









Prev Msg Next Msg
  null dereference
Medium Prob.
check that required != null
  use of default init
Low Prob.
check if init'ed(arr$.length)
  use of default init
Low Prob.
check if init'ed(len$)
  test always goes same way
Low Prob.
Test predetermined because i$ == len$
  dead code
Low Prob.
Dead code here because i$ == len$
  dead code continuesInfoDead code continues
Prev Msg Next Msg










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues










  dead code continuesInfoDead code continues











method void loadPlugin()
preinit'ed(this.plugin)
prethis.exports != null
prethis.provides != null
pre(soft) init'ed(com/dmdirc/plugins/GlobalClassLoader .me)
pre(soft) init'ed(this.isLoading)
pre(soft) init'ed(this.requirementsError)
pre(soft) init'ed(this.tempLoaded)
pre(soft) this.children != null
pre(soft) this.metaData != null
presumption(soft) init'ed(com.dmdirc.actions.CoreActionType. PLUGIN_LOADED)
postcom/dmdirc/logger/ProgramError.errorDir == One-of{old com/dmdirc/logger/ProgramError. errorDir, &amp;new File(getErrorFile#1)}
postcom/dmdirc/plugins/GlobalClassLoader.me == old com/dmdirc/plugins/GlobalClassLoader.me
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postthis.classloader == One-of{old this.classloader, null}
postinit'ed(this.isLoading)
postpossibly_updated(this.lastError)
postthis.plugin == One-of{old this.plugin, null}
postinit'ed(this.plugin)
postthis.plugin.domainSet == old this.plugin.domainSet
postthis.plugin.myDomain == old this.plugin.myDomain
postthis.requirementsError == One-of{old this.requirementsError, &amp;java.lang. StringBuilder:toString(...)}
postinit'ed(this.requirementsError)
postinit'ed(this.tempLoaded)
postcom.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). reportThread == old com.dmdirc.logger. ErrorManager__static_init.new ErrorManager(ErrorMan ager__static_init#1).reportThread
postpossibly_updated(new ErrorReportingThread(sendError #1) num objects)
postpossibly_updated(new ErrorReportingThread(sendError #1).queue)
postpossibly_updated(new File(getErrorFile#1) num objects)
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects == undefined
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects == 0, if init'ed
postnew HashMap(GlobalClassLoader#1) num objects == new GlobalClassLoader(getGlobalClassLoader#1) num objects
postnew PluginClassLoader(getSubClassLoader#1) num objects == new GlobalClassLoader(getGlobalClassLoa der#1) num objects
postnew PluginClassLoader(loadClass#1) num objects == new GlobalClassLoader(getGlobalClassLoader#1) num objects
postnew GlobalClassLoader(getGlobalClassLoader#1). resourcesList == undefined
postnew GlobalClassLoader(getGlobalClassLoader#1). resourcesList == null
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == new GlobalClassLoader(getGlobalClassL oader#1).resourcesList
postnew PluginClassLoader(loadClass#1).pluginInfo == new GlobalClassLoader(getGlobalClassLoader#1). resourcesList
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.lang.String:split
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.String:matches
unanalyzedcall on java.io.File
unanalyzedcall on java.io.File:exists
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getErrorManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on checkPlugins
unanalyzedcall on checkServices
unanalyzedcall on getPluginInfoByName
unanalyzedcall on com.dmdirc.updater.Version
unanalyzedcall on com.dmdirc.updater.Version:compareTo
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on java.util.List:size
unanalyzedcall on getServicesByType
unanalyzedcall on java.util.List:get
unanalyzedcall on isActive
unanalyzedcall on getService
unanalyzedcall on activate
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.util.concurrent.atomic. AtomicLong:getAndIncrement
unanalyzedcall on java.util.Date
unanalyzedcall on java.lang.IllegalArgumentException
unanalyzedcall on java.util.Arrays:copyOf
unanalyzedcall on java.util.Date:clone
unanalyzedcall on java.util.List:add
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:equals
unanalyzedcall on fireErrorStatusChanged
unanalyzedcall on java.lang.Object:notifyAll
unanalyzedcall on java.util.concurrent.BlockingQueue:add
unanalyzedcall on java.lang.Thread:isAlive
unanalyzedcall on java.lang.Thread
unanalyzedcall on com.dmdirc.logger.ErrorReportingThread:setD aemon
unanalyzedcall on java.lang.Thread:start
unanalyzedcall on java.awt.GraphicsEnvironment:isHeadless
unanalyzedcall on java.io.PrintStream:println
unanalyzedcall on javax.swing.SwingUtilities:invokeLater
unanalyzedcall on java.util.concurrent.Semaphore
unanalyzedcall on java.util.concurrent.Semaphore:acquireUnint erruptibly
unanalyzedcall on java.lang.Object:wait
unanalyzedcall on com.dmdirc.util.ListenerList:get
unanalyzedcall on isReady
unanalyzedcall on errorAdded
unanalyzedcall on com.dmdirc.logger.ErrorFixedStatus:equals
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on java.io.File:mkdirs
unanalyzedcall on java.util.Date:getTime
unanalyzedcall on java.io.File:renameTo
unanalyzedcall on java.io.File:createNewFile
unanalyzedcall on java.io.FileOutputStream
unanalyzedcall on java.util.concurrent.Semaphore:release
unanalyzedcall on java.io.IOException:printStackTrace
unanalyzedcall on java.io.OutputStream
unanalyzedcall on java.io.PrintWriter
unanalyzedcall on java.io.PrintWriter:println
unanalyzedcall on java.io.PrintWriter:close
unanalyzedcall on java.lang.Throwable:getStackTrace
unanalyzedcall on java.lang.Throwable:toString
unanalyzedcall on java.lang.StackTraceElement:toString
unanalyzedcall on java.lang.Throwable:getCause
unanalyzedcall on getTrace
unanalyzedcall on java.lang.Object:getClass
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:ordinal
unanalyzedcall on javax.swing.JButton:setText
unanalyzedcall on javax.swing.JButton:setEnabled
unanalyzedcall on equals
unanalyzedcall on getReportStatus
unanalyzedcall on errorStatusChanged
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.util.Arrays:equals
test_vector!(this.plugin == null) &amp; this.tempLoaded != 0: {0}, {1}
test_vector!(this.plugin == null) &amp; this.tempLoaded == 0: {0}, {1}
test_vector(!(this.plugin == null) &amp; this.tempLoaded == 0) | this.plugin == null: {0}, {1}
test_vectorthis.isLoading: {0}, {1}
test_vectorthis.tempLoaded: {1}, {0}









  call too complex - analysis skippedInfocall on void updateProvides()










  call too complex - analysis skippedInfocall on void loadRequired()










  method not available - call not analyzedInfocall on void onLoad()










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  test always goes same way
Low Prob.
Test predetermined because this.metaData != null
Prev Msg Next Msg










  call too complex - analysis skippedInfocall on void loadRequired()










  call too complex - analysis skippedInfocall on void loadClass(String)










Prev Msg Next Msg
  test always goes same way
Low Prob.
Test predetermined because isLoaded(...) == 0
Prev Msg Next Msg










Prev Msg Next Msg
  dead code
Low Prob.
Dead code here because isLoaded(...) == 0
Prev Msg Next Msg











method void addChild(PluginInfo)
prethis.children != null










method void delChild(PluginInfo)
prethis.children != null










method void loadClass(String)
pre(soft) classname != null
pre(soft) init'ed(com/dmdirc/plugins/GlobalClassLoader .me)
pre(soft) init'ed(this.classloader)
pre(soft) init'ed(this.tempLoaded)
pre(soft) this.children != null
pre(soft) this.classloader.pluginInfo != null
pre(soft) init'ed(this.metaData)
pre(soft) this.provides != null
presumptionjava.util.logging.Logger:getLogger(...)@52 != null
postpossibly_updated(com/dmdirc/logger/ProgramError. errorDir)
postinit'ed(com/dmdirc/plugins/GlobalClassLoader.me)
postpossibly_updated(com/dmdirc/plugins/PluginManager. me)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postpossibly_updated(java.lang.StringBuilder:toString(. ..)._tainted)
postpossibly_updated(this...myResourceManager)
postpossibly_updated(this.classloader)
postpossibly_updated(this.lastError)
postpossibly_updated(this.myResourceManager)
postpossibly_updated(this.plugin)
postinit'ed(this.plugin.domainSet)
postinit'ed(this.plugin.myDomain)
postinit'ed(this.tempLoaded)
postpossibly_updated(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).reportThread)
postpossibly_updated(new ErrorReportingThread(sendError #1) num objects)
postpossibly_updated(new ErrorReportingThread(sendError #1).queue)
postpossibly_updated(new File(getErrorFile#1) num objects)
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects <= 1
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects == 0
postinit'ed(new GlobalClassLoader(getGlobalClassLoader# 1).resourcesList)
postnew HashMap(GlobalClassLoader#1) num objects <= 1
postnew HashMap(GlobalClassLoader#1) num objects == 0
postpossibly_updated(new HashMap(PluginManager#2) num objects)
postpossibly_updated(new Hashtable(PluginManager#1) num objects)
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
postpossibly_updated(new PluginClassLoader(loadClass#1) num objects)
postpossibly_updated(new PluginClassLoader(loadClass#1) .pluginInfo)
postpossibly_updated(new PluginManager(getPluginManager #1) num objects)
postpossibly_updated(new PluginManager(getPluginManager #1).knownPlugins)
postpossibly_updated(new PluginManager(getPluginManager #1).myDir)
postpossibly_updated(new PluginManager(getPluginManager #1).services)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.String:matches
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getFullFilename
unanalyzedcall on getName
unanalyzedcall on getErrorManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on getPluginInfoByName
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on java.util.ArrayList
unanalyzedcall on getResourceManager
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourcesStartingWith
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.String:replaceAll
unanalyzedcall on java.lang.String:replace
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:findLo adedClass
unanalyzedcall on java.util.HashMap
unanalyzedcall on com.dmdirc.plugins.GlobalClassLoader:findLo adedClass
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:getPar ent
unanalyzedcall on loadClass
unanalyzedcall on isPersistent
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:resourceExists
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceBytes
unanalyzedcall on com.dmdirc.plugins.GlobalClassLoader:define Class
unanalyzedcall on java.lang.ClassLoader:loadClass
unanalyzedcall on getPluginInfos
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on getClassList
unanalyzedcall on getPluginClassLoader
unanalyzedcall on getPersistentClasses
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.lang.NoClassDefFoundError:getMessage
unanalyzedcall on java.lang.ClassNotFoundException
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:define Class
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:resolv eClass
unanalyzedcall on com.dmdirc.config.prefs.validator. ValidationResponse
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos
unanalyzedcall on java.util.concurrent.atomic. AtomicLong:getAndIncrement
unanalyzedcall on java.util.Date
unanalyzedcall on java.lang.IllegalArgumentException
unanalyzedcall on java.util.Arrays:copyOf
unanalyzedcall on java.util.Date:clone
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:equals
unanalyzedcall on fireErrorStatusChanged
unanalyzedcall on java.lang.Object:notifyAll
unanalyzedcall on java.util.concurrent.BlockingQueue:add
unanalyzedcall on java.lang.Thread:isAlive
unanalyzedcall on java.lang.Thread
unanalyzedcall on com.dmdirc.logger.ErrorReportingThread:setD aemon
unanalyzedcall on java.lang.Thread:start
unanalyzedcall on java.awt.GraphicsEnvironment:isHeadless
unanalyzedcall on java.io.PrintStream:println
unanalyzedcall on javax.swing.SwingUtilities:invokeLater
unanalyzedcall on java.util.concurrent.Semaphore
unanalyzedcall on java.util.concurrent.Semaphore:acquireUnint erruptibly
unanalyzedcall on java.lang.Object:wait
unanalyzedcall on com.dmdirc.util.ListenerList:get
unanalyzedcall on isReady
unanalyzedcall on errorAdded
unanalyzedcall on com.dmdirc.logger.ErrorFixedStatus:equals
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.io.File:mkdirs
unanalyzedcall on java.util.Date:getTime
unanalyzedcall on java.io.File:renameTo
unanalyzedcall on java.io.File:createNewFile
unanalyzedcall on java.io.FileOutputStream
unanalyzedcall on java.util.concurrent.Semaphore:release
unanalyzedcall on java.io.IOException:printStackTrace
unanalyzedcall on java.io.OutputStream
unanalyzedcall on java.io.PrintWriter
unanalyzedcall on java.io.PrintWriter:println
unanalyzedcall on java.io.PrintWriter:close
unanalyzedcall on java.lang.Throwable:getStackTrace
unanalyzedcall on java.lang.Throwable:toString
unanalyzedcall on java.lang.StackTraceElement:toString
unanalyzedcall on java.lang.Throwable:getCause
unanalyzedcall on getTrace
unanalyzedcall on java.lang.Object:getClass
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:ordinal
unanalyzedcall on javax.swing.JButton:setText
unanalyzedcall on javax.swing.JButton:setEnabled
unanalyzedcall on equals
unanalyzedcall on getReportStatus
unanalyzedcall on errorStatusChanged
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.util.Arrays:equals
test_vectorthis.classloader: Inverse{null}, Addr_Set{null}
test_vectorcom.dmdirc.config.prefs.validator.ValidationRespons e:isFailure(...)@964: {1}, {0}
test_vectorjava.lang.String:equals(...)@959: {0}, {1}
test_vectorjava.lang.String:isEmpty(...)@933: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that getKeyValue(...) != null
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that c != null
Prev Msg Next Msg










  method not available - call not analyzedInfocall on bool com.dmdirc.config.prefs.validator. ValidationResponse:isFailure()










  method not available - call not analyzedInfocall on void onLoad()










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










  method not available - call not analyzedInfocall on String com.dmdirc.config.prefs.validator. ValidationResponse:getFailureReason()










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg











method void unloadPlugin()
pre(soft) this.plugin != null
pre(soft) init'ed(this.tempLoaded)
pre(soft) this.children != null
pre(soft) init'ed(this.metaData)
pre(soft) this.provides != null
postpossibly_updated(java.lang.StringBuilder:toString(. ..)._tainted)
postthis.classloader == One-of{old this.classloader, null}
postpossibly_updated(this.lastError)
postthis.plugin == One-of{old this.plugin, null}
postthis.tempLoaded == One-of{old this.tempLoaded, 0}
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1) num objects)
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace










method bool isUnloadable()
preinit'ed(this.metaData)
pre(soft) init'ed(this.plugin)
pre(soft) init'ed(this.tempLoaded)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
test_vector!(this.plugin == null) &amp; this.tempLoaded != 0: {0}, {1}
test_vector!(this.plugin == null) &amp; this.tempLoaded == 0: {1}, {0}
test_vector(!(this.plugin == null) &amp; this.tempLoaded != 0) | this.plugin == null: {0}, {1}
test_vectorthis.tempLoaded: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that unloadable != null
Prev Msg Next Msg











method void unloadPlugin(bool)
pre(soft) this.plugin != null
pre(soft) init'ed(this.tempLoaded)
pre(soft) this.children != null
pre(soft) init'ed(this.metaData)
pre(soft) this.provides != null
presumptioninit'ed(com.dmdirc.actions.CoreActionType.PLUGIN_ UNLOADED)
postcom/dmdirc/logger/ProgramError.errorDir == One-of{old com/dmdirc/logger/ProgramError. errorDir, &amp;new File(getErrorFile#1)}
postcom/dmdirc/plugins/PluginManager.me == One-of{old com/dmdirc/plugins/PluginManager.me, &amp;new PluginManager(getPluginManager#1)}
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postpossibly_updated(java.lang.StringBuilder:toString(. ..)._tainted)
postthis.classloader == One-of{old this.classloader, null}
postpossibly_updated(this.lastError)
postthis.plugin == One-of{old this.plugin, null}
postinit'ed(this.plugin)
postinit'ed(this.tempLoaded)
postcom.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). reportThread == old com.dmdirc.logger. ErrorManager__static_init.new ErrorManager(ErrorMan ager__static_init#1).reportThread
postpossibly_updated(new ErrorReportingThread(sendError #1) num objects)
postpossibly_updated(new ErrorReportingThread(sendError #1).queue)
postpossibly_updated(new File(getErrorFile#1) num objects)
postpossibly_updated(new HashMap(PluginManager#2) num objects)
postpossibly_updated(new Hashtable(PluginManager#1) num objects)
postnew PluginClassLoader(getSubClassLoader#1) num objects <= 1
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1). pluginInfo)
postpossibly_updated(new PluginManager(getPluginManager #1) num objects)
postpossibly_updated(new PluginManager(getPluginManager #1).knownPlugins)
postpossibly_updated(new PluginManager(getPluginManager #1).myDir)
postpossibly_updated(new PluginManager(getPluginManager #1).services)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getErrorManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos
unanalyzedcall on java.util.concurrent.atomic. AtomicLong:getAndIncrement
unanalyzedcall on java.util.Date
unanalyzedcall on java.lang.IllegalArgumentException
unanalyzedcall on java.util.Arrays:copyOf
unanalyzedcall on java.util.Date:clone
unanalyzedcall on java.util.List:add
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:equals
unanalyzedcall on fireErrorStatusChanged
unanalyzedcall on java.lang.Object:notifyAll
unanalyzedcall on java.util.concurrent.BlockingQueue:add
unanalyzedcall on java.lang.Thread:isAlive
unanalyzedcall on java.lang.Thread
unanalyzedcall on com.dmdirc.logger.ErrorReportingThread:setD aemon
unanalyzedcall on java.lang.Thread:start
unanalyzedcall on java.awt.GraphicsEnvironment:isHeadless
unanalyzedcall on java.io.PrintStream:println
unanalyzedcall on javax.swing.SwingUtilities:invokeLater
unanalyzedcall on java.util.concurrent.Semaphore
unanalyzedcall on java.util.concurrent.Semaphore:acquireUnint erruptibly
unanalyzedcall on java.lang.Object:wait
unanalyzedcall on com.dmdirc.util.ListenerList:get
unanalyzedcall on isReady
unanalyzedcall on errorAdded
unanalyzedcall on com.dmdirc.logger.ErrorFixedStatus:equals
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.io.File:mkdirs
unanalyzedcall on java.util.Date:getTime
unanalyzedcall on java.io.File:renameTo
unanalyzedcall on java.io.File:createNewFile
unanalyzedcall on java.io.FileOutputStream
unanalyzedcall on java.util.concurrent.Semaphore:release
unanalyzedcall on java.io.IOException:printStackTrace
unanalyzedcall on java.io.OutputStream
unanalyzedcall on java.io.PrintWriter
unanalyzedcall on java.io.PrintWriter:println
unanalyzedcall on java.io.PrintWriter:close
unanalyzedcall on java.lang.Throwable:getStackTrace
unanalyzedcall on java.lang.Throwable:toString
unanalyzedcall on java.lang.StackTraceElement:toString
unanalyzedcall on java.lang.Throwable:getCause
unanalyzedcall on getTrace
unanalyzedcall on java.lang.Object:getClass
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:ordinal
unanalyzedcall on javax.swing.JButton:setText
unanalyzedcall on javax.swing.JButton:setEnabled
unanalyzedcall on equals
unanalyzedcall on getReportStatus
unanalyzedcall on errorStatusChanged
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.util.Arrays:equals
test_vector!(this.plugin == null) &amp; this.tempLoaded != 0: {1}, {0}
test_vector!(this.plugin == null) &amp; this.tempLoaded == 0: {0}, {1}
test_vector(!(this.plugin == null) &amp; this.tempLoaded != 0) | this.plugin == null: {1}, {0}
test_vector(!(this.plugin == null) &amp; this.tempLoaded == 0) | this.plugin == null: {0}, {1}
test_vectorthis.tempLoaded: {1}, {0}
test_vectorparentUnloading: {1}, {0}
test_vectorjava.lang.String:isEmpty(...)@1050: {1}, {0}
test_vectorjava.util.Iterator:hasNext(...)@1046: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@1067: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that getKeyValue(...) != null
Prev Msg Next Msg










Prev Msg Next Msg
  null dereference
Medium Prob.
check that this.plugin != null
  method not available - call not analyzedInfocall on void onUnload()
Prev Msg Next Msg










Prev Msg Next Msg
  precondition failure
Medium Prob.
com/dmdirc/logger/Logger.userError: com.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
  precondition failure
Low Prob.
com/dmdirc/logger/Logger.userError: init'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). logReports)
Prev Msg Next Msg










  method not available - call not analyzedInfocall on void com.dmdirc.actions.ActionManager:proce ssEvent(ActionType, StringBuffer, Object[])










Prev Msg Next Msg
  null dereference
Medium Prob.
check that this.provides != null
Prev Msg Next Msg











method String getLastError()
preinit'ed(this.lastError)
postreturn_value == this.lastError
postinit'ed(return_value)










method List getClassList()
preinit'ed(this.myClasses)
postreturn_value == this.myClasses
postinit'ed(return_value)










method String getKeyValue(String, String, String)
preinit'ed(this.metaData)
presumptioncom.dmdirc.util.ConfigFile:getKeyDomain(...)@1105 != null
postinit'ed(return_value)
test_vectorthis.metaData: Addr_Set{null}, Inverse{null}
test_vectorcom.dmdirc.util.ConfigFile:isKeyDomain(...)@1104: {0}, {1}









  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isKeyDomain (String)










  method not available - call not analyzedInfocall on Map com.dmdirc.util.ConfigFile:getKeyDomain (String)











method String getMainClass()
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method Plugin getPlugin()
preinit'ed(this.plugin)
postreturn_value == this.plugin
postinit'ed(return_value)










method PluginClassLoader getPluginClassLoader()
preinit'ed(this.classloader)
postreturn_value == this.classloader
postinit'ed(return_value)










method String getFriendlyVersion()
preinit'ed(this.metaData)
postjava.lang.String:valueOf(...)._tainted == 0
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.updater.Version










method Version getVersion()
preinit'ed(this.metaData)
postreturn_value == &amp;new Version(getVersion#1)
postnew Version(getVersion#1) num objects == 1
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get









  method not available - call not analyzedInfocall on void com.dmdirc.updater.Version(String)











method int getAddonID()
pre(soft) init'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method bool isPersistent()
preinit'ed(this.metaData)
presumptioncom.dmdirc.util.ConfigFile:getFlatDomain(...)@1175 != null
postinit'ed(return_value)
test_vectorthis.metaData: Addr_Set{null}, Inverse{null}
test_vectorcom.dmdirc.util.ConfigFile:isFlatDomain(...)@1174: {0}, {1}









  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isFlatDomai n(String)










  method not available - call not analyzedInfocall on List com.dmdirc.util.ConfigFile:getFlatDoma in(String)











method bool hasPersistent()
preinit'ed(this.metaData)
presumptioncom.dmdirc.util.ConfigFile:getFlatDomain(...)@1189 != null
postinit'ed(return_value)
test_vectorthis.metaData: Addr_Set{null}, Inverse{null}
test_vectorcom.dmdirc.util.ConfigFile:isFlatDomain(...)@1188: {0}, {1}









  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isFlatDomai n(String)










  method not available - call not analyzedInfocall on List com.dmdirc.util.ConfigFile:getFlatDoma in(String)











method List getPersistentClasses()
preinit'ed(this.metaData)
pre(soft) this.url != null
presumptioncom.dmdirc.util.resourcemanager.ResourceManager:get ResourcesStartingWith(...)@1208 != null
presumptionjava.util.Iterator:next(...)@1208 != null
postinit'ed(return_value)
postpossibly_updated(this.myResourceManager)
postnew ArrayList(getPersistentClasses#1) num objects == 1
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
test_vectorthis.metaData: Addr_Set{null}, Inverse{null}
test_vectorcom.dmdirc.util.ConfigFile:isFlatDomain(...)@1216: {0}, {1}
test_vectorjava.lang.String:matches(...)@1209: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that res != null
  method not available - call not analyzedInfocall on List com.dmdirc.util.resourcemanager. ResourceManager:getResourcesStartingWith(String)
Prev Msg Next Msg










  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isFlatDomai n(String)










  method not available - call not analyzedInfocall on List com.dmdirc.util.ConfigFile:getFlatDoma in(String)











method bool isPersistent(String)
preinit'ed(this.metaData)
presumptioncom.dmdirc.util.ConfigFile:getFlatDomain(...)@1233 != null
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
test_vectorthis.metaData: Addr_Set{null}, Inverse{null}
test_vectorcom.dmdirc.util.ConfigFile:isFlatDomain(...)@1232: {0}, {1}









  method not available - call not analyzedInfocall on bool com.dmdirc.util.ConfigFile:isFlatDomai n(String)










  method not available - call not analyzedInfocall on List com.dmdirc.util.ConfigFile:getFlatDoma in(String)











method String getFilename()
postreturn_value == this.filename
postinit'ed(return_value)










method String getFullFilename()
prethis.url != null
postinit'ed(return_value)










method String getRelativeFilename()
preinit'ed(com/dmdirc/plugins/PluginManager.me)
prethis.url != null
presumptiongetPluginManager(...).myDir != null
presumptiongetPluginManager(...)@1262 init'ed
presumptionjava.net.URL:getPath(...)@1252 != null
postcom/dmdirc/plugins/PluginManager.me == One-of{old com/dmdirc/plugins/PluginManager.me, &amp;new PluginManager(getPluginManager#1)}
postcom/dmdirc/plugins/PluginManager.me != null
postjava.lang.String:substring(...)._tainted == 0
postjava.lang.StringBuilder:toString(...)._tainted == 0
postinit'ed(return_value)
postnew HashMap(PluginManager#2) num objects <= 1
postnew Hashtable(PluginManager#1) num objects == new HashMap(PluginManager#2) num objects
postnew PluginManager(getPluginManager#1) num objects == new HashMap(PluginManager#2) num objects
postnew PluginClassLoader(getSubClassLoader#1) num objects == undefined
postnew PluginClassLoader(getSubClassLoader#1) num objects == 0, if init'ed
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == undefined
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == null
postnew PluginManager(getPluginManager#1).knownPlugins == &amp;new Hashtable(PluginManager#1)
postnew PluginManager(getPluginManager#1).myDir == &amp;java.lang.StringBuilder:toString(...)
postnew PluginManager(getPluginManager#1).services == &amp;new HashMap(PluginManager#2)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos
test_vectorjava.lang.String:startsWith(...)@1263: {0}, {1}










method String getAuthor()
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method String getDescription()
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method String getMinVersion()
preinit'ed(this.metaData)
postreturn_value in Addr_Set{null,&amp;""}
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
test_vectorjava.lang.String:isEmpty(...)@1287: {1}, {0}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that requiredVersion != null
Prev Msg Next Msg










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(bits.length)
Prev Msg Next Msg











method String getMaxVersion()
preinit'ed(this.metaData)
postreturn_value == &amp;""
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
test_vectorjava.lang.String:isEmpty(...)@1302: {1}, {0}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that requiredVersion != null
Prev Msg Next Msg










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(bits.length)
  test always goes same way
Low Prob.
Test predetermined because bits.length == 0
Prev Msg Next Msg










Prev Msg Next Msg
  dead code
Low Prob.
Dead code here because bits.length == 0
Prev Msg Next Msg











method String getName()
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method String getNiceName()
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method String toString()
preinit'ed(this.metaData)
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postreturn_value == &amp;java.lang.StringBuilder:toStri ng(...)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method bool loadAll()
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get









Prev Msg Next Msg
  null dereference
Medium Prob.
check that loadAll != null
Prev Msg Next Msg











method String getMetaInfo(String)
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method String getMetaInfo(String, String)
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method String getMetaInfo(String[])
premetainfo != null
premetainfo.length <= 232-1
pre(soft) init'ed(metainfo[...])
pre(soft) init'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method String getMetaInfo(String[], String)
premetainfo != null
premetainfo.length <= 232-1
pre(soft) init'ed(metainfo[...])
pre(soft) init'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get










method int compareTo(PluginInfo)
preo != null
preinit'ed(o.metaData)
preinit'ed(this.metaData)
postinit'ed(return_value)
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on getNiceName









Prev Msg Next Msg
  unused assignment in callee
Low Prob.
Unused assignment to (java.lang.StringBuilder:toStr ing(...)._tainted) in toString
Prev Msg Next Msg











method void updateExports()
prethis.exports != null
prethis.metaData != null
presumptionjava.util.Iterator:next(...)@1418 != null
postpossibly_updated(com/dmdirc/plugins/PluginManager. me)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postnew HashMap(PluginManager#2) num objects == 0
postnew Hashtable(PluginManager#1) num objects == 0
postnew PluginClassLoader(getSubClassLoader#1) num objects == 0
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
postnew PluginManager(getPluginManager#1) num objects == 0
postinit'ed(new PluginManager(getPluginManager#1). knownPlugins)
postinit'ed(new PluginManager(getPluginManager#1). myDir)
postinit'ed(new PluginManager(getPluginManager#1). services)
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.lang.Exception
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.LinkedList
unanalyzedcall on java.io.File
unanalyzedcall on java.util.LinkedList:add
unanalyzedcall on java.util.LinkedList:isEmpty
unanalyzedcall on java.util.LinkedList:pop
unanalyzedcall on java.io.File:isDirectory
unanalyzedcall on java.io.File:listFiles
unanalyzedcall on java.io.File:isFile
unanalyzedcall on java.io.File:getName
unanalyzedcall on java.lang.String:endsWith
unanalyzedcall on java.io.File:getPath
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:substring
unanalyzedcall on addPlugin
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.MalformedURLException:getMessage
unanalyzedcall on java.io.File:exists
unanalyzedcall on delPlugin
unanalyzedcall on com.dmdirc.updater.components. PluginComponent
unanalyzedcall on com.dmdirc.plugins.PluginException:getMessa ge
unanalyzedcall on java.util.Map:remove
unanalyzedcall on getPossiblePluginInfos
unanalyzedcall on java.util.List:add
test_vectorcom.dmdirc.util.ConfigFile:getFlatDomain(... )@1416: Addr_Set{null}, Inverse{null}
test_vectorjava.util.Iterator:hasNext(...)@1418: {0}, {1}









  method not available - call not analyzedInfocall on List com.dmdirc.util.ConfigFile:getFlatDoma in(String)










Prev Msg Next Msg
  use of default init
Low Prob.
check if init'ed(bits.length)
  test always goes same way
Low Prob.
Test predetermined because bits.length == 0
Prev Msg Next Msg










Prev Msg Next Msg
  dead code
Low Prob.
Dead code here because bits.length == 0
Prev Msg Next Msg










  dead code continuesInfoDead code continues











method ExportedService getExportedService(String)
prethis.exports != null
pre(soft) com/dmdirc/plugins/GlobalClassLoader.me != null
presumptioncom/dmdirc/plugins/GlobalClassLoader.me. resourcesList@1446 != null
presumptionjava.util.Map:get(...).className@1446 != null
presumptionjava.util.Map:get(...).pluginInfo...url@1446 != null
presumptionjava.util.Map:get(...).pluginInfo.classloader. pluginInfo@1446 != null
presumptionjava.util.Map:get(...).pluginInfo.classloader@1446 != null
presumptionjava.util.Map:get(...).pluginInfo@1446 != null
presumptionjava.util.Map:get(...)@1446 != null
postinit'ed(com/dmdirc/plugins/GlobalClassLoader.me)
postreturn_value in Addr_Set{&amp;new ExportedService(g etExportedService#1),&amp;new ExportedService(getEx portedService#1*),&amp;new ExportedService(getExpor tedService#2*)}
postnew ExportedService(getExportedService#1) num objects <= 1
postinit'ed(new ExportedService(getExportedService#1). myMethod)
postnew ExportedService(getExportedService#1).myObject == null
postnew ExportedService(getExportedService#1*) num objects <= 1
postinit'ed(new ExportedService(getExportedService#1*). myMethod)
postinit'ed(new ExportedService(getExportedService#1*). myObject)
postnew ExportedService(getExportedService#2*) num objects <= 1
postinit'ed(new ExportedService(getExportedService#2*). myMethod)
postnew ExportedService(getExportedService#2*). myObject == null
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects == 0
postinit'ed(new GlobalClassLoader(getGlobalClassLoader# 1).resourcesList)
postnew HashMap(GlobalClassLoader#1) num objects == 0
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.String:matches
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getFullFilename
unanalyzedcall on getName
unanalyzedcall on getMainClass
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on java.util.ArrayList
unanalyzedcall on getResourceManager
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourcesStartingWith
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.String:replaceAll
unanalyzedcall on java.lang.String:replace
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:findLo adedClass
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.util.HashMap
unanalyzedcall on com.dmdirc.plugins.GlobalClassLoader:findLo adedClass
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:getPar ent
unanalyzedcall on loadClass
unanalyzedcall on isPersistent
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:resourceExists
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceBytes
unanalyzedcall on com.dmdirc.plugins.GlobalClassLoader:define Class
unanalyzedcall on java.lang.ClassLoader:loadClass
unanalyzedcall on getPluginInfos
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on getClassList
unanalyzedcall on getPluginClassLoader
unanalyzedcall on getPersistentClasses
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.lang.NoClassDefFoundError:getMessage
unanalyzedcall on java.lang.ClassNotFoundException
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:define Class
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:resolv eClass
unanalyzedcall on java.lang.String:equals
unanalyzedcall on getPluginObject
unanalyzedcall on java.lang.Class:getDeclaredMethods
unanalyzedcall on java.lang.reflect.Method:getName
test_vectorjava.util.Map:containsKey(...)@1445: {0}, {1}










method Plugin getPluginObject()
preinit'ed(this.plugin)
postreturn_value == this.plugin
postinit'ed(return_value)