What Permissions Are Needed for Selecting Data and Viewing All Schema?
Assign the VIEW ANY DEFINITION securable to the user.

That will allow them to see SP and view definitions but not allow them to change it.

https://technet.microsoft.com/en-us/library/ms175808(v=sql.105).aspx