Agree with others that if he is fit and well he must be having all that he requires, he may well prefer more of a BARF type diet though, have you tried him with raw chicken wings or raw minced meat rolled in balls with dry food tucked inside it, he may find foods like this more interesting.
Also re: the rolling as others have said, all very normal some breeds are more likely to roll than others, terriers who like many other breeds have a
high prey drive are more likely to roll in all kinds of dead things and faeces, it is all part of a dogs natural instincts and goes back to their hunting days, being preditors their scent is easily picked up it only takes a little breeze to alert prey of them being there so their instincts teach them to roll to cover their own scent, dogs are still dogs no matter how much we domesticate and feed them ourselves

they never lose the ability to hunt, nor should they.
The only way you can stop the rolling is to always keep a close eye on him and call him away the moment he begins to sniff at something, so if you put a lot of effort into training him to leave! or off! or better still with a whistle or clicker you can sort the problem 95% of the time, you can't stop him acting on instinct but you
can teach him to obey commands, if you catch him soon enough.

Or the other solution is to keep him occupied yourself by playing games like retrieve etc to distract him.
But, as annoying as it is, you mustn't blame him for just doing what he is built to do, he's a terrier and terriers are particularly good hunters, it is part of his breed trait.