﻿# Почему в PVS\-Studio в окне Error List иногда не показывается номер строки, в которой обнаружена проблема?

Иногда анализатор кода PVS\-Studio якобы обнаруживает проблему в коде, выдает сообщение, указывает имя файла, но не показывает номер проблемной строки как показано на рисунке\.

![0072_Line_number_is_absent_ru/image1.png](https://import.viva64.com/docx/blog/0072_Line_number_is_absent_ru/image1.png)

Сразу надо заметить, что в ознакомительном режиме работы анализатор также не выдает номера строк для некоторых ошибок, но сейчас речь идет не об ограничениях ознакомительной версии\.

Подобное поведение связано с двумя особенностями:

* указанный файл \(dso\.y, как на рисунке\) является автоматически генерируемым файлом, который не совсем корректен\.
* окно Error List, используемое в PVS\-Studio для выдачи сообщений, не показывает номера строк для файлов, которые физически отсутствуют в указанном месте на диске\.

Для того, чтобы понять данную ситуацию, откроем окно Output Window, в которое также выводятся сообщения от анализатора PVS\-Studuo\.

![0072_Line_number_is_absent_ru/image2.png](https://import.viva64.com/docx/blog/0072_Line_number_is_absent_ru/image2.png)

В этом окне указано, что проблема в файле dso\.y в строке 467\. Но если посмотреть на файлы проекта, то окажется что такого файла \(dso\.y\) в проекте либо вовсе нет, либо есть, но находится в другом месте\. Что же, ошибка анализатора PVS\-Studio? Не совсем\. 

Анализаторы кода, так же как и компиляторы, получают информацию о позиции в файле на основе специальных директив \#line, которые всегда есть в препроцессированных файлах\. В обычном препроцессированном файле легко найти такое \(в одну строку\):

\#line 72 "c:\\\\program files\\\\

microsoft visual studio 8\\\\vc\\\\include\\\\stdio\.h"

На основе этой информации и получаются позиции кода в сообщениях\.

Теперь посмотрим на автоматически сгенерированный файл dso\.cpp\. В нем можно встретить:

\#line 47 "dso\.y"

Обратите внимание, что, во\-первых, путь указан не полностью, а, во\-вторых, файл dso\.y вовсе может отсутствовать на той машине, на которой проверяется проект\. 

Итак,  отсутствие номера строки в сообщении от анализатора PVS\-Studio говорит о том, что в указанном месте файл не обнаружен\. Этот файл можно найти вручную и вручную же посмотреть на указанные строки кода\.