Исключение определенного набора файлов из отчета о выпуске линта

Возможно, ваше замешательство связано со значением extern. Поскольку привязка по умолчанию - extern, любая переменная, объявленная вне области видимости внешней функции без ключевого слова static, является extern.

Причина, по которой GOT необходима, заключается в том, что адрес переменных, к которым обращается доступная библиотека код не известен на момент генерации общей библиотеки. Это зависит либо от адреса загрузки, в который загружается библиотека (если определение находится в самой библиотеке), либо для стороннего кода, в котором определена переменная (если определение находится в другом месте). Поэтому вместо того, чтобы помещать адрес в код, компилятор генерирует код для чтения GOT разделяемой библиотеки, а затем загружает адрес из GOT во время выполнения.

Если переменная известна , которые должны быть определены в одной и той же общей библиотеке (либо потому, что он используется static, либо атрибут видимости hidden или protected, который он использовал), тогда адрес относительно кода в библиотеке может быть исправлен в то время, когда генерируется файл общей библиотеки. В этом случае, вместо того, чтобы выполнять поиск через GOT, компилятор просто генерирует код для доступа к переменной с обращением к программному счету. Это дешевле как во время выполнения, так и во время загрузки (потому что весь процесс поиска и перемещения символа может быть пропущен во время загрузки).

3
задан Uwe Keim 18 January 2019 в 05:03
поделиться

1 ответ

Я нашел другой способ после того, как отметил ответ @ bayrinet. Файлы (не только папки), которые нужно исключить, также можно передать команде с помощью флага исключения, как показано ниже -

>gometalinter.v2 ./... --exclude=somefolder --exclude=.*_test.go
0
ответ дан aniztar 18 January 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: