Training Language Models to Generate Quality Code with Program Analysis Feedback