- 200 готовых правил - Написание собственных правил (custom rules) QUALITY TOOLS. LINT Хорошая статья о написании собственных правил (custom rules): https://www.bignerdranch.com/blog/building-custom-lint-checks-in-android/ - Интеграция с Андроид студией - Андроид ориентирован
имеет @SuperCall аннотацию - CommitTransaction когда commit() не вызван на транзиции фрагмента - DuplicateIds одинаковые идентификаторы в рамках одного экрана (xml layout) - ResourceType использование ресурса неверного типа (@StringRes, @DrawableRes, @ColorRes...) - NewApi вызов методов из нового API на неподдерживаемой версии платформы … и многие другие Полный список правил: http://tools.android.com/tips/lint-checks
+ в цикле - Сравнение строк с помощью == или != - Вызов toString() на объекте типа String - Floating point equality - Поток (stream) может быть не закрыт при выходе из метода - Неиспользуемые переменные/методы … и многие другие Полный список: http://findbugs.sourceforge.net/bugDescriptions.html
Environment.getExternalStorageDirectory() вместо “/sdcard” - AvoidInstantiatingObjectsInLoops - LooseCoupling. Избегайте использование реализаций коллекций (i.e., HashSet); лучше использовать интерфейсы коллекций (i.e, Set) - AvoidCatchingThrowable, AvoidCatchingNPE - UseArrayListInsteadOfVector - UncommentedEmptyMethodBody, UncommentedEmptyConstructor … и многие другие Полный набор правил: https://pmd.github.io/pmd-5.4.1/pmd-java/rules/index.html
Conventions - Google Java Style - Написание собственных правил #qualityMatters http://checkstyle.sourceforge.net/ https://docs.gradle.org/current/userguide/checkstyle_plugin.html ОБНАРУЖИВАЕТ: проблемы проектирования класса проблемы проектирования метода проблемы форматирования
копирайтах - Может быть использован как автономный инструмент без интеграции (.bat/.sh) - Поддерживаемые языки cpp, go, java, matlab, objective-c, php, python, ruby, scala... Поиск одинаковых фрагментов кода (или как поймать копи-пастера) QUALITY TOOLS. COPY-PASTE DETECTOR
максимальном уровне критичности, напоминает прохождение компьютерной игры на уровне сложности “NIGHTMARE” #qualityMatters Не стоит слепо верить всему, что “советуют” данные инструменты. Все ошибки/замечания следует внимательно проанализировать, прежде чем исправлять
быть на одной волне - Изначально поддержка требует времени и сил - Достаточно запускать непосредственно перед коммитом - Quality tools + CI = MAXIMUM PROFIT Lint, findbugs, checkstyle, pmd, cpd, etc QUALITY TOOLS #qualityMatters
Paperwork - Доступ к логам (logcat + network). Lynx, OkHttp - Crash reporting - Подменяемый URL (integration with Mock-Server)! - Инструменты диагностики “Debug only, scalable, stand-alone, not embedded into layout, not embedded into a project code!” DEV TOOLS #qualityMatters
Открытый исходный код. Разрабатывается командой из Facebook. - Network Inspection - View Hierarchy - Database Inspection - dumpapp - мощный интерфейс для доступа к приложению “изнутри”
к логам непосредственно из приложения. - Фильтрация по тексту - Фильтрация по уровню логирования - Logs sharing - Скрытый “запуск встряхиванием” #qualityMatters
log in production, a puppy dies.” – Jake Wharton DEV TOOLS. TIMBER - БЕЗ TAG КОНСТАНТ! - Легко модифицируемая интеграция - Негласный стандарт логирования
добавить его с самого начала разработки #qualityMatters - Логируйте не только ошибки, но и UN-expected состояния - Игнорируйте исключения в дебажных версиях - Проверяйте исключения в процессе разработки - Конструктивные сообщения к логируемым исключениям
// Don't ever really do this! return first + " " + last; } V/Example: ⇢ getName(first="Jake", last="Wharton") V/Example: ⇠ getName [16ms] = "Jake Wharton" - аргументы вызова метода - возвращаемый результат - время выполнения APPLICATION METRICS. HUGO Библиотека для логирования параметров и времени выполнения методов на основе аннотаций https://github.com/JakeWharton/hugo Логирует:
методов жизненного цикла активити - Измеряет время инициализации объектов Dagger 2 - Позволяет запустить method tracing вместе со следующим запуском приложения - Считает количество пропущенных кадров БИБЛИОТЕКА МЕТРИК ПРОИЗВОДИТЕЛЬНОСТИ Android ПРИЛОЖЕНИЯ #perfMatters
ресурсы для нескольких платформ в одном месте - Оперируйте идентификаторами, не значениями - Не меняйте содержимое только локально - Автоматизируйте импорт в проект, если возможно Сложности с именованием цветов? -> http://chir.ag/projects/name-that-color #DCD6D5 -> Swiss Coffee #FEE56D -> Kournikova https://crowdin.com/ https://localise.biz/ ...или Общий файл