A proper way to rotate a RigidBody when using physics would be to use either
add_torque or repeatedly calling
Anyway this works only well as long as the object does not (nearly) pass through a collision object in one physics time unit (=1/60th of a second unless configured different).
If you're faster then you'd have to "look ahead" using raycasts or other methods. Raycasts are used typically on fast, roughly straight moving objects (i.e. bullets) to see in "advance" what they will hit during the next physics timeframe. (To avoid they simply "skip" through a wall/opponent.)
Other methods would be (just an idea) to let an area rotate with the body which has a collision that covers the collision area "to come" and in case of something entering that area to calculate if something will hit the real body during the next time frame (using angular velocity and probably Transform2D).