These tend to become cargo cult practices, "thou shalt never" that get in the way of those few places where they are useful.
I like the way its implemented in Perl. Use 'use strict' by default, and guard the block where you really need something unusual by 'no strict something' - refs, vars, subs - so neither compiler nor people reading your code never being confused whether is it a mistake or author's intention.
#pragma warning disable ${list of warnings}
and #pragma warning restore ${list of warnings}
https://msdn.microsoft.com/en-us/library/441722ys.aspxAlthough frankly the list of warnings to disable and restore consists of warning numbers, not names, which is not super convenient.