OCLint
• Что такое статический анализатор кода
• Каким образом работают анализаторы кода
• Clang static analyzer vs OCLint
• Ссылки
Что такое статический
анализатор кода?
Каким образом работает
анализатор кода?
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
while b != 0
if a > b
a = a - b
else
b = b - a
return a
Clang static analyzer
vs
OCLint?
Clang static analyzer
• Отправка сообщения не
проинициализированному объекту
• Использование не проинициализированных
переменных
• Деление на ноль
• Методы, в которых не вызван super метод
• Не используемые ivars
OCLint
• Пустые if/else, do/while операторы
• Длинные методы
• Инвертированная логика
• Pointer type property с assign аттрибутом
• Mutable object property с strong аттрибутом
Преимущества OCLint
• Возможность писать свои правила
• Поддержка нескольких форматов отчетов
• Возможность отключения/включения правил
• Анализ отдельных файлов
• Подсчет цикломатической сложности проекта
Принцип работы
OCLint?
Утилиты для
работы с OCLint
• xctool/xcpretty
• xcodebuild + oclint-xcodebuild
• oclint/oclint-json-compilation-database
• Travis, Jenkins, fastlane
• xctool/xcpretty
• xcodebuild + oclint-xcodebuild
• oclint/oclint-json-compilation-database
• Travis, Jenkins, fastlane
• xctool/xcpretty
• xcodebuild + oclint-xcodebuild
• oclint/oclint-json-compilation-database
• Travis, Jenkins, fastlane
• xctool/xcpretty
• xcodebuild + oclint-xcodebuild
• oclint/oclint-json-compilation-database
• Travis, Jenkins, fastlane
Типы правил
• Generic
• Source Code Reader
• AST Visitor
• AST Matcher
Ссылки
• oclint.org
• http://mgrebenets.github.io/mobile%20ci/
2015/02/08/oclint
• https://codeascraft.com/2014/01/15/static-
analysis-with-oclint/
• https://gavrix.wordpress.com/2013/02/28/
integrating-oclint-in-xcode/

RDSDataSource: OCLint