/ / Може ли да се каже на Кланг да не анализира определени файлове? - xcode, профилиране, clang

Може ли да се каже, че не е необходимо да се анализират някои файлове? - xcode, профилиране, клонг

Опитвам се да използвам clang за профил на проект, върху който работя. Проектът включва доста голяма статична библиотека, която е включена в Xcode като зависимост.

Наистина бих искал Кланг да не анализира файловете на зависимостите, тъй като изглежда, че клангът се проваля. Възможно ли е това? Чета документацията на кланг и не съм го намерил.

Отговори:

13 за отговор № 1

В краен случай има опция за груба сила.

Добавете това в началото на файл:

// Omit from static analysis.
#ifndef __clang_analyzer__

Добавете това към края:

#endif // not __clang_analyzer__

и clang --analyze няма да видите съдържанието на файла.

справка: Контрол на диагностиката на статичния анализатор


4 за отговор № 2

Така че, това наистина не е отговор, но работи достатъчно добре.

Това, което в крайна сметка правех, беше изграждането на статикатабиблиотека преди време и след това изграждане на проекта с помощта на сканиране. Тъй като вече имаше актуална конструкция на статичната библиотека, тя не беше преустроена и по този начин не беше сканирана.

Все пак обичам да имам истински отговор за това.


1 за отговор № 3

Не използвам XCode, но използвам scan-build в Linuxследните работи за мен. Аз моят случай, искам да стартирам статичния анализ на всички първи страни, генериран код. Въпреки това искам да избегна пускането му върху код на трета страна и генериран код.

В командния ред кланг-анализаторът е закаченв изграждането, когато сканиране-сглобяване задава променливите на средата CC и CXX на ccc-анализатор и c ++ - местата на анализатора. Написах два прости скрипта, наречени ccc-analyzer.py и c ++ - analyzer.py и ги прикачих към компилацията на мястото по подразбиране. В тези скриптове за обвиване просто погледнах пътя на компилирането на файла и след това пуснах директно или суровия компилатор (ако искам да избегна статичен анализ), или c * -анализатора (ако искам да се случи статичен анализ). Моят скрипт е в python и е свързан с конкретната ми система за изграждане, но като пример, който се нуждае от модификация:

import subprocess
import sys

def main(argv):
is_third_party_code = False
for i in range(len(argv)):
arg = argv[i]
if arg == "-c":
file_to_compile = argv[i + 1]
if "/third_party/" in file_to_compile or 
file_to_compile.startswith("gen/"):
is_third_party_code = True
break
if is_third_party_code:
argv[0] = "/samegoal/bin/clang++"
else:
argv[0] = "/samegoal/scan-build/c++-analyzer"
return subprocess.call(argv)

if __name__ == "__main__":
sys.exit(main(sys.argv))