Analyzing the security of C# source code using a hierarchical quality model