oclint

35
OCLint

Upload: rambler-ios

Post on 08-Jan-2017

29 views

Category:

Technology


0 download

TRANSCRIPT

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/