Last Msg First Msg
























method com.dmdirc.actions.ActionModel__static_init










method void com.dmdirc.actions.ActionModel(String, String)
postthis.conditions == &new ArrayList(ActionModel#1 )
postthis.group == group
postinit'ed(this.group)
postthis.name == name
postinit'ed(this.name)
postnew ArrayList(ActionModel#1) num objects == 1










method void com.dmdirc.actions.ActionModel(String, String, ActionType[], String[], List, ConditionTree, String)
preresponse != null
pretriggers != null
pre(soft) init'ed(response[...])
pre(soft) init'ed(triggers[...])
postthis.conditionTree == conditionTree
postinit'ed(this.conditionTree)
postthis.conditions == conditions
postinit'ed(this.conditions)
postthis.group == group
postinit'ed(this.group)
postthis.modified == 1
postnew ActionType[](ActionModel#2) num objects == 1
postnew ArrayList(ActionModel#1) num objects == 1
postnew String[](ActionModel#3) num objects == 1
postthis.name == name
postinit'ed(this.name)
postthis.newFormat == newFormat
postinit'ed(this.newFormat)
postthis.response == &new String[](ActionModel#3)
postthis.triggers == &new ActionType[](ActionModel# 2)
postthis.triggers.length == triggers.length
postinit'ed(this.triggers.length)
postthis.triggers[...] == One-of{triggers[...], undefined}
postthis.response.length == response.length
postinit'ed(this.response.length)
postthis.response[...] == One-of{response[...], undefined}










method void trigger(StringBuffer, Object[])
preinit'ed(this.conditionTree)
prethis.conditions != null
prethis.triggers != null
prethis.triggers.length >= 1
prethis.triggers[0] != null
pre(soft) arguments != null
pre(soft) init'ed(arguments[0])
pre(soft) init'ed(arguments[1])
pre(soft) arguments[1].length in {1..232-1}
pre(soft) init'ed(arguments[2])
pre(soft) arguments[2].length in {1..232-1}
pre(soft) init'ed(arguments[...])
pre(soft) init'ed(com.dmdirc.actions.ConditionTree$1__ static_init.new int[](ConditionTree$1__static_init# 1)[...])
pre(soft) com/dmdirc/Main.controller != null
pre(soft) init'ed(com/dmdirc/ServerManager.me)
pre(soft) init'ed(this.newFormat)
pre(soft) this.response != null
pre(soft) this.response.length <= 232-1
pre(soft) init'ed(this.response[...])
pre(soft) this.triggers[0].type != null
presumptioncom.dmdirc.commandparser.parsers.GlobalCommandParse r:getGlobalCommandParser(...)@140 != null
presumptioncom.dmdirc.ui.interfaces.InputWindow:getCommandPars er(...)@142 != null
presumptiongetServerManager(...).servers != null
presumptionjava.util.List:get(...)@136 != null
postinit'ed(com/dmdirc/ServerManager.me)
postinit'ed(format._tainted)
postnew ArrayList(ServerManager#1) num objects <= 1
postnew ArrayList(ServerManager#1) num objects == 0
postnew ServerManager(getServerManager#1) num objects <= 1
postnew ServerManager(getServerManager#1) num objects == 0
postinit'ed(new ServerManager(getServerManager#1). servers)
unanalyzedcall on java.util.List:size
unanalyzedcall on java.util.Deque:pollFirst
unanalyzedcall on java.lang.Character:instanceof
unanalyzedcall on java.lang.Character:charValue
unanalyzedcall on java.util.Deque:isEmpty
unanalyzedcall on readTerm
unanalyzedcall on java.util.ArrayDeque
unanalyzedcall on java.util.Deque:pollLast
unanalyzedcall on java.util.Deque:addFirst
unanalyzedcall on parseStack
unanalyzedcall on java.util.Deque:poll
unanalyzedcall on java.util.Deque:add
unanalyzedcall on java.util.Deque:size
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:charAt
unanalyzedcall on java.lang.String:valueOf
unanalyzedcall on java.lang.Integer:parseInt
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.lang.Character:valueOf
unanalyzedcall on java.util.List:iterator
unanalyzedcall on com.dmdirc.config.IdentityManager:getGlobal Config
unanalyzedcall on com.dmdirc.config.ConfigManager:getOptions
unanalyzedcall on java.util.Map:entrySet
unanalyzedcall on java.util.Set:iterator
unanalyzedcall on java.util.Map$Entry:getKey
unanalyzedcall on java.util.Map$Entry:getValue
unanalyzedcall on [Ljava.lang.String;:instanceof
unanalyzedcall on java.lang.String:instanceof
unanalyzedcall on java.lang.String:split
unanalyzedcall on doServerSubstitutions
unanalyzedcall on doComponentSubstitutions
unanalyzedcall on getServer
unanalyzedcall on getState
unanalyzedcall on com.dmdirc.ServerState:equals
unanalyzedcall on getCompatibleComponents
unanalyzedcall on java.lang.Object:toString
unanalyzedcall on get
unanalyzedcall on getType
unanalyzedcall on getArgTypes
unanalyzedcall on test
unanalyzedcall on com.dmdirc.actions.ConditionTree$OPERATION: ordinal
unanalyzedcall on evaluate
unanalyzedcall on java.util.ArrayList
unanalyzedcall on com.dmdirc.logger.Logger:assertTrue
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on appliesTo
test_vectorarguments.length: {0}, {1..+Inf}
test_vectorformat: Addr_Set{null}, Inverse{null}
test_vectorthis.newFormat: Addr_Set{null}, Inverse{null}
test_vectorjava.util.List:size(...)@140: {-231..0}, {1..232-1}









  method not available - call not analyzedInfocall on Window com.dmdirc.ui.interfaces. UIController:getActiveWindow()










  call too complex - analysis skippedInfocall on InputWindow getFrame()










  method not available - call not analyzedInfocall on GlobalCommandParser com.dmdirc. commandparser.parsers.GlobalCommandParser:getGlobal CommandParser()










  method not available - call not analyzedInfocall on CommandParser com.dmdirc.ui.interfaces. InputWindow:getCommandParser()










Prev Msg Next Msg
  unused assignment in callee
Low Prob.
Unused assignment to (java.lang.StringBuilder:toStr ing(...)._tainted) in doSubstitution
  method not available - call not analyzedInfocall on void com.dmdirc.commandparser.parsers. CommandParser:parseCommand(InputWindow, String)
Prev Msg Next Msg











method bool test(ActionSubstitutor, Object[])
preinit'ed(this.conditionTree)
prethis.conditions != null
pre(soft) arguments != null
pre(soft) init'ed(arguments[0])
pre(soft) init'ed(arguments[1])
pre(soft) arguments[1].length in {1..232-1}
pre(soft) init'ed(arguments[2])
pre(soft) arguments[2].length in {1..232-1}
pre(soft) init'ed(arguments[...])
pre(soft) init'ed(com.dmdirc.actions.ConditionTree$1__ static_init.new int[](ConditionTree$1__static_init# 1)[...])
pre(soft) sub != null
pre(soft) sub.type != null
pre(soft) sub.type.type != null
presumptioncondition.arg@166 >= -1
presumptioncondition.arg@166 < arguments.length
presumptioncondition.comparison@166 != null
presumptioncondition.component@166 != null
presumptiongetRealConditionTree(...)...argument@170 >= 0
presumptiongetRealConditionTree(...)...leftArg@170 != null
presumptiongetRealConditionTree(...)...op@170 != null
presumptiongetRealConditionTree(...)...rightArg@170 != null
presumptiongetRealConditionTree(...).argument@170 in {0..232-2}
presumptiongetRealConditionTree(...).argument@170 - java.util.List:size(...)@163 in {-232+1.. -1}
presumptiongetRealConditionTree(...).leftArg@170 != null
presumptiongetRealConditionTree(...).op@170 != null
presumptiongetRealConditionTree(...).rightArg@170 != null
presumptionjava.util.Iterator:next(...)@166 != null
presumptionjava.util.List:size(...)@163 >= 1
postinit'ed(return_value)
unanalyzedcall on java.util.List:size
unanalyzedcall on java.util.Deque:pollFirst
unanalyzedcall on java.lang.Character:instanceof
unanalyzedcall on java.lang.Character:charValue
unanalyzedcall on java.util.Deque:isEmpty
unanalyzedcall on readTerm
unanalyzedcall on java.util.ArrayDeque
unanalyzedcall on java.util.Deque:pollLast
unanalyzedcall on java.util.Deque:addFirst
unanalyzedcall on parseStack
unanalyzedcall on java.util.Deque:poll
unanalyzedcall on java.util.Deque:add
unanalyzedcall on java.util.Deque:size
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:charAt
unanalyzedcall on java.lang.String:valueOf
unanalyzedcall on java.lang.Integer:parseInt
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.lang.Character:valueOf
unanalyzedcall on com.dmdirc.config.IdentityManager:getGlobal Config
unanalyzedcall on com.dmdirc.config.ConfigManager:getOptions
unanalyzedcall on java.util.Map:entrySet
unanalyzedcall on java.util.Set:iterator
unanalyzedcall on java.util.Map$Entry:getKey
unanalyzedcall on java.util.Map$Entry:getValue
unanalyzedcall on [Ljava.lang.String;:instanceof
unanalyzedcall on java.lang.String:instanceof
unanalyzedcall on java.lang.String:split
unanalyzedcall on doServerSubstitutions
unanalyzedcall on doComponentSubstitutions
unanalyzedcall on getServer
unanalyzedcall on getState
unanalyzedcall on com.dmdirc.ServerState:equals
unanalyzedcall on getCompatibleComponents
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.Object:toString
unanalyzedcall on get
unanalyzedcall on getType
unanalyzedcall on getArgTypes
unanalyzedcall on test
unanalyzedcall on com.dmdirc.actions.ConditionTree$OPERATION: ordinal
unanalyzedcall on evaluate
unanalyzedcall on java.util.ArrayList
unanalyzedcall on com.dmdirc.logger.Logger:assertTrue
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on appliesTo
test_vectorjava.util.Iterator:hasNext(...)@166: {0}, {1}









Prev Msg Next Msg
  array index out of bounds
Medium Prob.
check that i < results.length
  overflow
Low Prob.
check that i in {-231-1..232-2}
Prev Msg Next Msg










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











method List getConditions()
preinit'ed(this.conditions)
postreturn_value == this.conditions
postinit'ed(return_value)










method void setConditions(List)
postthis.conditions == conditions
postinit'ed(this.conditions)
postthis.modified == 1










method ActionType[] getTriggers()
preinit'ed(this.triggers)
pre(soft) init'ed(this.triggers[...])
postreturn_value == One-of{this.triggers, &amp;new ActionType[](getTriggers#1)}
postreturn_value in Addr_Set{null,&amp;new ActionType[](getTriggers#1)}
postnew ActionType[](getTriggers#1) num objects <= 1
postnew ActionType[](getTriggers#1).length == this.triggers.length
postinit'ed(new ActionType[](getTriggers#1).length)
postnew ActionType[](getTriggers#1)[...] == One-of{this.triggers[...], undefined}










method void setTriggers(ActionType[])
pretriggers != null
pre(soft) init'ed(triggers[...])
postthis.modified == 1
postnew ActionType[](setTriggers#1) num objects == 1
postthis.triggers == &amp;new ActionType[](setTriggers# 1)
postthis.triggers.length == triggers.length
postinit'ed(this.triggers.length)
postpossibly_updated(this.triggers[...])










method String getNewFormat()
preinit'ed(this.newFormat)
postreturn_value == this.newFormat
postinit'ed(return_value)










method void setNewFormat(String)
postthis.modified == 1
postthis.newFormat == newFormat
postinit'ed(this.newFormat)










method String[] getResponse()
preinit'ed(this.response)
pre(soft) init'ed(this.response[...])
postreturn_value == One-of{this.response, &amp;new String[](getResponse#1)}
postreturn_value in Addr_Set{null,&amp;new String[](getResponse#1)}
postnew String[](getResponse#1) num objects <= 1
postnew String[](getResponse#1).length == this.response.length
postinit'ed(new String[](getResponse#1).length)
postnew String[](getResponse#1)[...] == One-of{this.response[...], undefined}










method void setResponse(String[])
preresponse != null
pre(soft) init'ed(response[...])
postthis.modified == 1
postnew String[](setResponse#1) num objects == 1
postthis.response == &amp;new String[](setResponse#1)
postthis.response.length == response.length
postinit'ed(this.response.length)
postpossibly_updated(this.response[...])










method String getGroup()
preinit'ed(this.group)
postreturn_value == this.group
postinit'ed(return_value)










method void setGroup(String)
postthis.group == newGroup
postinit'ed(this.group)
postthis.modified == 1










method String getName()
preinit'ed(this.name)
postreturn_value == this.name
postinit'ed(return_value)










method void setName(String)
postthis.modified == 1
postthis.name == newName
postinit'ed(this.name)










method ConditionTree getConditionTree()
preinit'ed(this.conditionTree)
postreturn_value == this.conditionTree
postinit'ed(return_value)










method ConditionTree getRealConditionTree()
preinit'ed(this.conditionTree)
pre(soft) this.conditions != null
postinit'ed(return_value)
postnew ConditionTree(parseStack#3) num objects <= 1
postnew ConditionTree(parseStack#3).argument == -1
postnew ConditionTree(parseStack#3).leftArg == null
postnew ConditionTree(parseStack#3).op == &amp;com.dmdirc.actions.ConditionTree$OPERATION__ static_init.new ConditionTree$OPERATION(ConditionTr ee$OPERATION__static_init#5)
postnew ConditionTree(parseStack#3).rightArg == null
postinit'ed(new ConditionTree(readTerm#1) num objects)
postnew ConditionTree(readTerm#1).argument == 0, if init'ed
postnew ConditionTree(readTerm#1).leftArg == null
postnew ConditionTree(readTerm#1).op == null
postnew ConditionTree(readTerm#1).rightArg == null
unanalyzedcall on java.util.Deque:pollFirst
unanalyzedcall on java.lang.Character:instanceof
unanalyzedcall on java.lang.Character:charValue
unanalyzedcall on java.util.Deque:isEmpty
unanalyzedcall on readTerm
unanalyzedcall on java.util.ArrayDeque
unanalyzedcall on java.util.Deque:pollLast
unanalyzedcall on java.util.Deque:addFirst
unanalyzedcall on parseStack
unanalyzedcall on java.util.Deque:poll
unanalyzedcall on java.util.Deque:add
unanalyzedcall on java.util.Deque:size
unanalyzedcall on java.lang.String:length
unanalyzedcall on java.lang.String:charAt
unanalyzedcall on java.lang.String:valueOf
unanalyzedcall on java.lang.Integer:parseInt
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.lang.Character:valueOf










method void setConditionTree(ConditionTree)
postthis.conditionTree == conditionTree
postinit'ed(this.conditionTree)
postthis.modified == 1










method bool isModified()
preinit'ed(this.modified)
postreturn_value == this.modified
postinit'ed(return_value)










method void resetModified()
postthis.modified == 0










method String toString()
preinit'ed(this.conditions)
preinit'ed(this.group)
preinit'ed(this.name)
preinit'ed(this.newFormat)
preinit'ed(this.response)
preinit'ed(this.triggers)
postjava.lang.StringBuilder:toString(...)._tainted == this.conditions._tainted | this.group._tainted | this.name._tainted | One-of{this.conditions._ tainted | this.group._tainted | this.name._tainted, this.newFormat._tainted}
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postreturn_value == &amp;java.lang.StringBuilder:toStri ng(...)