Customizing Code Coverage Analysis
Using Code Coverage to Determine How Much Code is being Tested
Troubleshooting Code Coverage
Troubleshooting missing data in Code Coverage Results
My conclusion is that the default settings that comes Visual Studio 2015 is not sufficient because it includes the test code in the test results. I found the .runsettings file to be a necessary change. When I did this, I was tempted to exclude test assemblies to the list of modules to exclude, but found this actually stopped the tests from being reported on. Instead I found it better to use namespace exclusions using the function tags.
<!--Exclude (Tests from the results) any functions in namespaces that have Test in them-->
I also found it useful to exclude tests (classes or methods) from the code coverage results that use particular attributes on them. For example,
<!--Don't forget "Attribute" at the end of the name -->
I did however add any assemblies that have their own unit tests and code coverage reports to the list of modules to exclude. That way the code coverage of these assemblies is not counted twice.
Also, Here is a reporting tool that helps show code coverage results in a more user friendly manner.