Depending on tool one can grant access to users if they need access to look at code for store procedure, function and package without giving the user execute access.
For AquaStudio for example one can set up user with following access which would allow to look at the code, the access needs to be granted by sys. In this setup you are replace the view all_objects with dba_objects and all_source with dba_source.
grant select on sys.dba_source to ;
create synonym .all_source for sys.dba_source;
grant select on sys.dba_objects to ;
create synonym .all_objects for sys.dba_objects;