Ну, как он это делает — посмотреть не сложно. Достаточно залезть в исходники clang-c. Если работа ведётся через C++ API, то, как я уже говорил, для каждого (ну или почти каждого) элемента AST-деверва можно получить его позицию в файле.
Если я всё правильно понял, тебе нужно (в таком случае) тебе нужно для каждой конструкции (для которой ты хочешь вывести диагностику) брать её SourceLocation с помощью метода типа такого: getLocation, с помощью SourceManager'а определять файл, в котором находится эта локация, и если это не «твой» файл, то не выводить никакой диагностики.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.