This article is from the NYPD Blue FAQ, by Dave Chapman, Alan Sepinwall and Jeff Knapp with numerous contributions by others.
The fifth season opener has revealed the shooter to be Lt.
Shannon of the IAB.
From Alan's summary review of the season five opener:
Having Shannon be the shooter makes perfect sense and
explains his motivation for suspending Bobby: he realized
that someone was on to his extracurricular activities,
and the only way to cover his tracks was to 1)Suspend
Simone (which any clean IAB cop would do if a cop refused
to cooperate to the extent Bobby did), and 2)Take out
Salvo so he couldn't cut a deal at a later date to give
away Shannon. Shannon later tried to cover his tracks by
trying to lure Andy alone with a phony phone tip so he
could whack him in solitude (a cough-and-you'll-miss-it
line during the Gerald/Frankie bust that seemed to have
been added in postproduction), and when that didn't work,
he panicked and made the dumb move Simone and Sipowicz
were hoping for.