Starting from 6.2, SonarQube enables the ability to recognize "executable lines" in code files whether or not there are any tests in the files. The feature must also be supported and fed by your analyzer. I'm guessing you're using an analyzer version that does provide that data, and that's where you're getting the calculation of missing coverage on these files that are untouched by unit tests.
Note that before this functionality was added, the situation looked something like this
+--------------+-----------+-------+
| File | Cvd lines | Cvg % |
+--------------+-----------+-------+
| 100LineFile | 75 | 75 |
+--------------+-----------+-------+
| Total | 75 | 75 |
+--------------+-----------+-------+
AND
+--------------+-----------+-------+
| File | Cvd lines | Cvg % |
+--------------+-----------+-------+
| 100LineFile | 75 | 75 |
| 100LineFile2 | 0 | - |
+--------------+-----------+-------+
| Total | 75 | 75 |
+--------------+-----------+-------+
Because files that weren't touched by any unit tests were simply omitted from the calculations, giving a falsely rosy picture of overall coverage. Now it looks like this:
+--------------+-----------+-------+
| File | Cvd lines | Cvg % |
+--------------+-----------+-------+
| 100LineFile | 75 | 75 |
| 100LineFile2 | 0 | 0 |
+--------------+-----------+-------+
| Total | 75 | 37.5|
+--------------+-----------+-------+