Использование лязга статический Анализатор из XCode

JLS 14.21, недостижимые операторы - это раздел, в котором рассматриваются следующие вопросы:

Оператор if, независимо от того, имеет ли он другую часть, обрабатывается необычным образом. , По этой причине это обсуждается отдельно в конце этого раздела.

В конечном итоге это связано с тем, как обрабатывается условная компиляция. Рассмотрим этот метод:

public int foo() {
    if (DEBUG) {
        return 5;
    }
}

Если DEBUG равен static final boolean true;, вы можете подумать, что компилятор должен быть достаточно умен, чтобы понять, что метод всегда будет возвращать 5. Но если его изменить на false, код больше не действителен.

Метод должен быть действительным для всех путей через метод без изменения исходного кода , что позволяет оптимизирующим компиляторам пропускать байт-код без модификаций исходного кода независимо от значения флага.

Сам конец связанной секции JLS подробно описан в деталях.

6
задан pkamb 13 September 2018 в 18:32
поделиться

3 ответа

В пункте меню сценария XCode «Редактировать пользовательские сценарии» введите следующий сценарий:

#!/bin/bash
result=$( osascript << END
tell application "Xcode"
 tell active project document
  set projectPath to path as string
 end tell 
end tell 
return projectPath
END
)

cd "$result"

/Developer/clangchecker/scan-build -k -V xcodebuild -configuration Debug -sdk iphonesimulator3.0

Очевидно, вам нужно будет изменить путь к вашей установке Clang и отрегулировать его версию. используемого SDK.

Не забудьте выполнить «Очистить все» непосредственно перед использованием сборки сканирования, иначе результаты могут быть неполными.

3
ответ дан 17 December 2019 в 07:08
поделиться

Я считаю, что переменная среды $ {PROJECT_DIR} - это то, что вам нужно для каталога проекта, в котором выполняется сценарий этапа сборки.

0
ответ дан 17 December 2019 в 07:08
поделиться

FYI, Xcode 3.2 (я полагаю, только Snow Leopard) включает в себя Clang Static Analyzer в пункте меню «Build and Analyze».

http://iosdevelopertips.com/xcode/static-code-analysis-clang-and-xcode-3-2.html

Одним из недостатков Xcode 3.2 (помимо того, что он работает только на Snow Leopard) является то, что Симуляторы v2.x, похоже, не работают - на самом деле, я видел сообщения, указывающие, что сборки v2.x вообще не поддерживаются.

1
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

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