Last Msg First Msg
























method com.dmdirc.updater.UpdateChecker$2__static_init

method com.dmdirc.updater.UpdateChecker$1__static_init










method UpdateChecker$STATE access$000()
preinit'ed(status)
postreturn_value == status
postinit'ed(return_value)

method void access$100()
pre(soft) new MapList(ListenerList#1).map != null
poststatus == One-of{old status, &com.dmdirc. updater.UpdateChecker$STATE__static_init.new UpdateChecker$STATE(UpdateChecker$STATE__static_ init#5), &com.dmdirc.updater.UpdateChecker$STAT E__static_init.new UpdateChecker$STATE(UpdateChecke r$STATE...
unanalyzedcall on java.util.List:iterator
unanalyzedcall on getStatus
unanalyzedcall on doUpdate
unanalyzedcall on setStatus
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on statusChanged
unanalyzedcall on java.lang.Thread
unanalyzedcall on java.lang.Thread:start

method com.dmdirc.updater.UpdateChecker__static_init
postcomponents == &new ArrayList(UpdateChecker__ static_init#2)
postlistener == &new UpdateChecker$1(UpdateChecker_ _static_init#6)
postlisteners == &new ListenerList(UpdateChecker__ static_init#5)
postmutex == &new Semaphore(UpdateChecker__static_ init#1)
poststatus == &com.dmdirc.updater.UpdateChecker$STA TE__static_init.new UpdateChecker$STATE(UpdateCheck er$STATE__static_init#1)
posttimer == &new Timer(UpdateChecker__static_ init#3)
postupdates == &new ArrayList(UpdateChecker__ static_init#4)
postnew ArrayList(UpdateChecker__static_init#2) num objects == 1
postnew ArrayList(UpdateChecker__static_init#4) num objects == 1
postnew HashMap(MapList#1) num objects == 1
postnew ListenerList(UpdateChecker__static_init#5) num objects == 1
postnew MapList(ListenerList#1) num objects == 1
postnew Semaphore(UpdateChecker__static_init#1) num objects == 1
postnew Timer(UpdateChecker__static_init#3) num objects == 1
postnew UpdateChecker$1(UpdateChecker__static_init#6) num objects == 1
postlisteners.listeners == &new MapList(ListenerLis t#1)
postnew MapList(ListenerList#1).map == &new HashMap(MapList#1)
unanalyzedcall on java.util.HashMap









Prev Msg Next Msg
  unlocked shared daemon update
Low Prob.
Usage of shared object com/dmdirc/updater/UpdateChe cker.status via com.dmdirc.updater.Update$1:run(); unlocked usages found
  unlocked shared daemon update
Low Prob.
Usage of shared object status via com.dmdirc. updater.UpdateChecker:run(); unlocked usages found
Prev Msg Next Msg











method UpdateChecker$STATE[] values()
pre(soft) init'ed($VALUES[...])
postreturn_value == &new UpdateChecker$STATE[](valu es#1)
postnew UpdateChecker$STATE[](values#1) num objects == 1
postreturn_value.length == 5
postreturn_value[...] == One-of{$VALUES[...], undefined}

method UpdateChecker$STATE valueOf(String)
postinit'ed(return_value)

method void com.dmdirc.updater.UpdateChecker$STATE(String , int)










method com.dmdirc.updater.UpdateChecker$STATE__static_ init
post$VALUES == &new UpdateChecker$STATE[](UpdateChe cker$STATE__static_init#6)
postCHECKING == &new UpdateChecker$STATE(UpdateChec ker$STATE__static_init#2)
post$VALUES[1] == &new UpdateChecker$STATE(UpdateCh ecker$STATE__static_init#2)
postIDLE == &new UpdateChecker$STATE(UpdateChecker$ STATE__static_init#1)
post$VALUES[0] == &new UpdateChecker$STATE(UpdateCh ecker$STATE__static_init#1)
postRESTART_REQUIRED == &new UpdateChecker$STATE(Up dateChecker$STATE__static_init#5)
post$VALUES[4] == &new UpdateChecker$STATE(UpdateCh ecker$STATE__static_init#5)
postUPDATES_AVAILABLE == &new UpdateChecker$STATE(U pdateChecker$STATE__static_init#4)
post$VALUES[3] == &new UpdateChecker$STATE(UpdateCh ecker$STATE__static_init#4)
postUPDATING == &new UpdateChecker$STATE(UpdateChec ker$STATE__static_init#3)
post$VALUES[2] == &new UpdateChecker$STATE(UpdateCh ecker$STATE__static_init#3)
postnew UpdateChecker$STATE(UpdateChecker$STATE__ static_init#1) num objects == 1
postnew UpdateChecker$STATE(UpdateChecker$STATE__ static_init#2) num objects == 1
postnew UpdateChecker$STATE(UpdateChecker$STATE__ static_init#3) num objects == 1
postnew UpdateChecker$STATE(UpdateChecker$STATE__ static_init#4) num objects == 1
postnew UpdateChecker$STATE(UpdateChecker$STATE__ static_init#5) num objects == 1
postnew UpdateChecker$STATE[](UpdateChecker$STATE__ static_init#6) num objects == 1
post$VALUES.length == 5
unanalyzedcall on java.lang.Enum










method void com.dmdirc.updater.UpdateChecker$1()










method void updateStatusChange(Update, UpdateStatus)
pre(soft) com.dmdirc.util.ListenerList.new MapList(ListenerList#1).map != null
pre(soft) init'ed(com/dmdirc/updater/UpdateChecker. status)
pre(soft) update != null
pre(soft) update.listeners != null
postcom/dmdirc/updater/UpdateChecker.status == One-of{&com.dmdirc.updater.UpdateChecker$STATE __static_init.new UpdateChecker$STATE(UpdateChecker $STATE__static_init#1), old com/dmdirc/updater/Upda teChecker.status, &com.dmdirc.updater. UpdateChec...
postinit'ed(com/dmdirc/updater/UpdateChecker.status)
unanalyzedcall on java.util.List:iterator
unanalyzedcall on getStatus
unanalyzedcall on doUpdate
unanalyzedcall on setStatus
unanalyzedcall on java.util.List:isEmpty
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on statusChanged
unanalyzedcall on java.util.List:remove
unanalyzedcall on removeUpdateListener
unanalyzedcall on java.lang.Thread
unanalyzedcall on java.lang.Thread:start










method void updateProgressChange(Update, float)










method void com.dmdirc.updater.UpdateChecker()










method void run()
pre(soft) new MapList(ListenerList#1).map != null
pre(soft) init'ed(status)
pre(soft) timer != null
presumptioncom.dmdirc.config.IdentityManager:getConfigIdentity (...)@131 != null
presumptioncom.dmdirc.config.IdentityManager:getConfigIdentity (...)@198 != null
presumptioncom.dmdirc.config.IdentityManager:getGlobalConfig(. ..)@127 != null
presumptioninit'ed(com.dmdirc.logger.ErrorLevel.LOW)
presumptionjava.util.ArrayList:iterator(...)@142 != null
presumptionjava.util.Date:getTime(...)@131 in {-2_147_483_648_ 999..4_294_967_295_999}
presumptionjava.util.Date:getTime(...)@198 in {-2_147_483_648_ 999..4_294_967_295_999}
presumptionjava.util.Iterator:next(...)@142 != null
presumptionjava.util.Iterator:next(...)@152 != null
presumptionjava.util.Iterator:next(...)@169 != null
presumptionjava.util.Iterator:next(...)@187 != null
poststatus == One-of{old status, &com.dmdirc. updater.UpdateChecker$STATE__static_init.new UpdateChecker$STATE(UpdateChecker$STATE__static_ init#1), &com.dmdirc.updater.UpdateChecker$STAT E__static_init.new UpdateChecker$STATE(UpdateChecke r$STATE...
posttimer == One-of{old timer, &new Timer(init#3)}
posttimer != null
postnew Timer(init#3) num objects <= 1
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.List:add
unanalyzedcall on com.dmdirc.config.IdentityManager:getGlobal Config
unanalyzedcall on com.dmdirc.config.ConfigManager:getOptionIn t
unanalyzedcall on java.util.Date
unanalyzedcall on java.util.Date:getTime
unanalyzedcall on com.dmdirc.logger.Logger:userError
unanalyzedcall on java.util.Timer:cancel
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on com.dmdirc.updater.Update
unanalyzedcall on getUrl
unanalyzedcall on addUpdateListener
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.lang.String:substring
unanalyzedcall on getName
unanalyzedcall on com.dmdirc.config.ConfigManager:hasOptionSt ring
unanalyzedcall on com.dmdirc.config.ConfigManager:getOptionBo ol
unanalyzedcall on java.util.List:iterator
unanalyzedcall on getStatus
unanalyzedcall on doUpdate
unanalyzedcall on setStatus
unanalyzedcall on java.util.List:isEmpty
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on statusChanged
unanalyzedcall on java.net.URL
unanalyzedcall on java.net.URL:openConnection
unanalyzedcall on java.net.URLConnection:setUseCaches
unanalyzedcall on java.net.URLConnection:setDoInput
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.net.URLConnection:setDoOutput
unanalyzedcall on java.net.URLConnection:setConnectTimeout
unanalyzedcall on java.net.URLConnection:setRequestProperty
unanalyzedcall on java.net.URLConnection:getOutputStream
unanalyzedcall on java.io.DataOutputStream
unanalyzedcall on java.io.DataOutputStream:writeBytes
unanalyzedcall on java.io.DataOutputStream:flush
unanalyzedcall on java.io.DataOutputStream:close
unanalyzedcall on java.net.URLConnection:getInputStream
unanalyzedcall on java.io.InputStreamReader
unanalyzedcall on java.io.BufferedReader
unanalyzedcall on java.io.BufferedReader:readLine
unanalyzedcall on java.io.BufferedReader:close
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.lang.String:split
unanalyzedcall on java.lang.UnsupportedOperationException
unanalyzedcall on com.dmdirc.logger.Logger:appError
unanalyzedcall on java.lang.Thread
unanalyzedcall on java.lang.Thread:start
test_vectorcom.dmdirc.config.ConfigManager:getOptionBool(... )@129: {0}, {1}
test_vectorcom.dmdirc.config.ConfigManager:getOptionBool(... )@203: {0}, {1}
test_vectorjava.lang.StringBuilder:length(...)@164: {-231..0}, {1..232-1}
test_vectorjava.util.Iterator:hasNext(...)@142: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@152: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@187: {0}, {1}
test_vectorjava.util.List:isEmpty(...)@180: {0}, {1}
test_vectorjava.util.concurrent.Semaphore:tryAcquire(... )@121: {1}, {0}
test_vectorupdate.status@142: Addr_Set{&amp;com.dmdirc. updater.UpdateStatus__static_init.new UpdateStatus(UpdateStatus__static_init#6)}, Inverse{&amp;com.dmdirc.updater.UpdateStatus__ static_init.new UpdateStatus(UpdateStatus__static_i nit#6)}
test_vectorupdate.status@187: Inverse{&amp;com.dmdirc.updater. UpdateStatus__static_init.new UpdateStatus(UpdateSt atus__static_init#1)}, Addr_Set{&amp;com.dmdirc. updater.UpdateStatus__static_init.new UpdateStatus(UpdateStatus__static_init#1)}









  method not available - call not analyzedInfocall on ConfigManager com.dmdirc.config. IdentityManager:getGlobalConfig()










Prev Msg Next Msg
  unlocked shared daemon update
Low Prob.
Usage of shared object com/dmdirc/updater/UpdateChe cker.status via com.dmdirc.updater.Update$1:run(); unlocked usages found
  unlocked shared daemon update
Low Prob.
Usage of shared object status via com.dmdirc. updater.UpdateChecker:run(); unlocked usages found
  method not available - call not analyzedInfocall on bool com.dmdirc.config.ConfigManager:getOpt ionBool(String, String)
Prev Msg Next Msg










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










  method not available - call not analyzedInfocall on String com.dmdirc.config.ConfigManager:getO ption(String, String)










  call too complex - analysis skippedInfocall on String getName()










  call too complex - analysis skippedInfocall on Version getVersion()










  method not available - call not analyzedInfocall on void com.dmdirc.logger.Logger:appError(Erro rLevel, String, Throwable)










  method not available - call not analyzedInfocall on void com.dmdirc.logger.Logger:userError(Err orLevel, String)










  method not available - call not analyzedInfocall on Identity com.dmdirc.config.IdentityManager: getConfigIdentity()
  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.config.ConfigManager:getOpt ionBool(String, String)











method void checkLine(String)
preline != null
presumptioninit'ed(com.dmdirc.logger.ErrorLevel.LOW)
unanalyzedcall on java.util.List:add
unanalyzedcall on com.dmdirc.updater.Update
unanalyzedcall on getUrl
unanalyzedcall on addUpdateListener
unanalyzedcall on getName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.lang.String:split
unanalyzedcall on java.lang.UnsupportedOperationException
unanalyzedcall on com.dmdirc.logger.Logger:appError
test_vectorjava.lang.String:startsWith(...)@214: {0}, {1}
test_vectorjava.lang.String:startsWith(...)@216: {0}, {1}
test_vectorjava.lang.String:startsWith(...)@219: {1}, {0}









  method not available - call not analyzedInfocall on void com.dmdirc.logger.Logger:userError(Err orLevel, String)










  method not available - call not analyzedInfocall on void com.dmdirc.logger.Logger:userError(Err orLevel, String)











method void doUpdateAvailable(String)
preline != null
unanalyzedcall on getName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.lang.String:split
unanalyzedcall on java.lang.UnsupportedOperationException
unanalyzedcall on com.dmdirc.logger.Logger:appError
unanalyzedcall on java.util.List:add









Prev Msg Next Msg
  test always goes same way
Low Prob.
Test predetermined because getUrl(...)@233 == null
Prev Msg Next Msg










Prev Msg Next Msg
  dead code
Low Prob.
Dead code here because getUrl(...)@233 == null
Prev Msg Next Msg











method void init()
pretimer != null
presumptioncom.dmdirc.config.IdentityManager:getGlobalConfig(. ..)@244 != null
presumptioncom.dmdirc.config.IdentityManager:getGlobalConfig(. ..)@246 != null
presumptioninit'ed(com.dmdirc.logger.ErrorLevel.LOW)
presumptionjava.util.Date:getTime(...)@248 in {-2_147_483_648_ 999..4_294_967_295_999}
presumptionjava.util.Date:getTime(...)@248/1_000 - (com.dmdirc.config.ConfigManager:getOptionInt(... )@244 + com.dmdirc.config.ConfigManager:getOptionIn t(...)@246) in {-232+1..8_589_934_591}
posttimer == &amp;new Timer(init#3)
postnew Timer(init#3) num objects == 1
unanalyzedcall on java.util.TimerTask
test_vectorjava.util.Date:getTime(...)@248/1_000 - (com.dmdirc.config.ConfigManager:getOptionInt(... )@244 + com.dmdirc.config.ConfigManager:getOptionIn t(...)@246): {0..8_589_934_591}, {-232+1.. -1}









  method not available - call not analyzedInfocall on ConfigManager com.dmdirc.config. IdentityManager:getGlobalConfig()
  method not available - call not analyzedInfocall on int com.dmdirc.config.ConfigManager:getOpti onInt(String, String)










  method not available - call not analyzedInfocall on ConfigManager com.dmdirc.config. IdentityManager:getGlobalConfig()
  method not available - call not analyzedInfocall on int com.dmdirc.config.ConfigManager:getOpti onInt(String, String)










  method not available - call not analyzedInfocall on void com.dmdirc.logger.Logger:userError(Err orLevel, String)











method void com.dmdirc.updater.UpdateChecker$2()










method void run()
unanalyzedcall on java.lang.Thread
unanalyzedcall on java.lang.Thread:start










method void checkNow()










method void registerComponent(UpdateComponent)










method void removeComponent(String)
pre(soft) name != null
presumptionjava.util.Iterator:next(...)@297 != null
test_vectorjava.lang.String:equals(...)@298: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@297: {0}, {1}









  call too complex - analysis skippedInfocall on String getName()











method UpdateComponent findComponent(String)
prename != null
presumptionjava.util.Iterator:next(...)@318 != null
postinit'ed(return_value)
test_vectorjava.lang.String:equals(...)@319: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@318: {0}, {1}









  call too complex - analysis skippedInfocall on String getName()











method void removeUpdate(Update)
preupdate != null
preupdate.listeners != null
pre(soft) new MapList(ListenerList#1).map != null
pre(soft) init'ed(status)
poststatus == One-of{&amp;com.dmdirc.updater. UpdateChecker$STATE__static_init.new UpdateChecker$STATE(UpdateChecker$STATE__static_ init#1), old status, &amp;com.dmdirc.updater. UpdateChecker$STATE__static_init.new UpdateChecker$STATE(UpdateChecker$STATE...
postinit'ed(status)
unanalyzedcall on java.util.List:iterator
unanalyzedcall on getStatus
unanalyzedcall on doUpdate
unanalyzedcall on setStatus
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on statusChanged
unanalyzedcall on java.lang.Thread
unanalyzedcall on java.lang.Thread:start
unanalyzedcall on java.util.List:remove
test_vectorjava.util.List:isEmpty(...)@338: {0}, {1}









Prev Msg Next Msg
  unlocked shared daemon update
Low Prob.
Usage of shared object com/dmdirc/updater/UpdateChe cker.status via com.dmdirc.updater.Update$1:run(); unlocked usages found
  unlocked shared daemon update
Low Prob.
Usage of shared object status via com.dmdirc. updater.UpdateChecker:run(); unlocked usages found
Prev Msg Next Msg











method void applyUpdates()
pre(soft) new MapList(ListenerList#1).map != null
poststatus == One-of{old status, &amp;com.dmdirc. updater.UpdateChecker$STATE__static_init.new UpdateChecker$STATE(UpdateChecker$STATE__static_ init#3), &amp;com.dmdirc.updater.UpdateChecker$STAT E__static_init.new UpdateChecker$STATE(UpdateChecke r$STATE...
unanalyzedcall on java.util.List:iterator
unanalyzedcall on getStatus
unanalyzedcall on doUpdate
unanalyzedcall on setStatus
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on statusChanged
unanalyzedcall on java.lang.Thread
unanalyzedcall on java.lang.Thread:start
test_vectorjava.util.List:isEmpty(...)@349: {1}, {0}










method void doNextUpdate()
pre(soft) new MapList(ListenerList#1).map != null
presumptionjava.util.Iterator:next(...)@362 != null
poststatus == One-of{old status, &amp;com.dmdirc. updater.UpdateChecker$STATE__static_init.new UpdateChecker$STATE(UpdateChecker$STATE__static_ init#5), &amp;com.dmdirc.updater.UpdateChecker$STAT E__static_init.new UpdateChecker$STATE(UpdateChecke r$STATE...
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on statusChanged
unanalyzedcall on java.lang.Thread
unanalyzedcall on java.lang.Thread:start
test_vectorjava.util.Iterator:hasNext(...)@362: {0}, {1}
test_vectorupdate.status@362: Inverse{&amp;com.dmdirc.updater. UpdateStatus__static_init.new UpdateStatus(UpdateSt atus__static_init#1),&amp;com.dmdirc.updater. UpdateStatus__static_init.new UpdateStatus(UpdateSt atus__static_init#6)}, Addr_Set{&amp;com.dmdirc.u...










method List getComponents()
postreturn_value == &amp;new ArrayList(UpdateChecker__ static_init#2)










method List getAvailableUpdates()
postreturn_value == &amp;new ArrayList(UpdateChecker__ static_init#4)










method void addListener(UpdateCheckerListener)
prenew MapList(ListenerList#1).map != null
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.util.List:add










method void removeListener(UpdateCheckerListener)
prenew MapList(ListenerList#1).map != null
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.List:remove










method UpdateChecker$STATE getStatus()
preinit'ed(status)
postreturn_value == status
postinit'ed(return_value)










method void setStatus(UpdateChecker$STATE)
prenew MapList(ListenerList#1).map != null
presumptionjava.util.Iterator:next(...)@428 != null
poststatus == newStatus
postinit'ed(status)
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
test_vectorjava.util.Iterator:hasNext(...)@428: {0}, {1}









Prev Msg Next Msg
  unlocked shared daemon update
Low Prob.
Usage of shared object com/dmdirc/updater/UpdateChe cker.status via com.dmdirc.updater.Update$1:run(); unlocked usages found
  unlocked shared daemon update
Low Prob.
Usage of shared object status via com.dmdirc. updater.UpdateChecker:run(); unlocked usages found
Prev Msg Next Msg










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










  method not available - call not analyzedInfocall on void statusChanged(UpdateChecker$STATE)











method bool isEnabled(UpdateComponent)
precomponent != null
presumptioncom.dmdirc.config.IdentityManager:getGlobalConfig(. ..)@441 != null
postinit'ed(return_value)









  method not available - call not analyzedInfocall on ConfigManager com.dmdirc.config. IdentityManager:getGlobalConfig()
  call too complex - analysis skippedInfocall on String getName()
  method not available - call not analyzedInfocall on bool com.dmdirc.config.ConfigManager:hasOpt ionString(String, String)
  method not available - call not analyzedInfocall on bool com.dmdirc.config.ConfigManager:getOpt ionBool(String, String)