It’s not completely exhaustive but its a start. Then, using the terminal, go through the missing and broken attributes:
for example:
owner = controller.getOwner()
gives an attribute error, so Googling “Blender 2.5 getOwner()” you find that getOwner() is depreciated and you now use:
owner = controller.owner
Certainly, in 2.54 I don’t get any depreciation warnings for that one, it just gives attribute errors… Anyway, after a while you can become quite an expert.