Why not FSF’s GNAT? It’s been a while since I used it, but I remember preferring its error messages to some commercial offering we had around.
I do prefer GNAT's error messages over AdaCore's compilers (despite the compiler frontend still being based on GNAT), but SPARK adds a ton.
[0] I should note that SPARK 2014 is also available as a GPL'd "community" edition.
EDIT: Asterisk + HN formatting
They sell a pro version with bells and whistles but AFAIK the actual compiler is the same.