Para el desarrollo de iOS, hemos utilizado una herramienta de análisis estático de este tipo en nuestro desarrollo diario, es decir, es una herramienta Clang
de compilación front-end que Clang
admite C
, y . Esta herramienta es compatible con nuestro desarrollo y depuración diarios.C++
Objective-C
Swift
OC
Swift
OCLint
Es una Clang
herramienta basada en , que puede encontrar problemas potenciales en el código. Para funciones específicas, consulte la documentación oficial Aquí presentamos principalmente su instalación y uso.
instalar software
OClint
brew tap oclint/formulae
brew install oclint
prueba
Introduzca el directorio del proyecto (por SuperLogger
ejemplo),
Cambie a la ubicación problemática () del proyecto descargado y cambie al SuperLoggerDemo
directorio:
git clone https://github.com/yourtion/SuperLogger.git
cd SuperLogger
git checkout 0e64637459996ed91e0dd15718efb5d7200a9971
cd SuperLoggerDemo
Ejecución de pruebas:
# Cleanup before building
rm -f compile_commands.json
xctool -project SuperLoggerDemo.xcodeproj -scheme SuperLoggerDemo clean
# Build Project
xctool build \
-project SuperLoggerDemo.xcodeproj -scheme SuperLoggerDemo \
-reporter json-compilation-database:compile_commands.json
# Analyze Project
oclint-json-compilation-database -e Pods -- \
-max-priority-1=100000 \
-max-priority-2=100000 -max-priority-3=100000 \
-disable-rule=InvertedLogic \
-disable-rule=CollapsibleIfStatements \
-disable-rule=UnusedMethodParameter \
-disable-rule=LongLine \
-disable-rule=LongVariableName \
-disable-rule=ShortVariableName \
-disable-rule=UselessParentheses \
-disable-rule=IvarAssignmentOutsideAccessorsOrInit | sed 's/\(.*\.\m\{
1,2\}:[0-9]*:[0-9]*:\)/\1 warning:/'
# Final cleanup
rm -f compile_commands.json
producción
OCLint Report
Summary: TotalFiles=14 FilesWithViolations=4 P1=0 P2=2 P3=6
SuperLoggerPreviewView.m:77:37: warning: replace with container literal [migration|P3]
SuperLogerListView.m:206:37: warning: empty catch statement [empty|P2]
SuperLogerListView.m:25:15: warning: empty if statement [empty|P2]
SuperLogerListView.m:119:1: warning: long method [size|P3] Method with 92 lines exceeds limit of 50
SuperLogerListView.m:171:41: warning: replace with container literal [migration|P3]
SuperLogerListView.m:110:21: warning: replace with object subscripting [migration|P3]
SuperLogger.m:60:30: warning: replace with object subscripting [migration|P3]
SuperLogger.m:108:31: warning: replace with object subscripting [migration|P3]
[OCLint (http://oclint.org) v0.10.2]
Para preguntas específicas, consulte: http://docs.oclint.org/en/stable/rules/index.html
después de la reparación
OCLint Report
Summary: TotalFiles=14 FilesWithViolations=0 P1=0 P2=0 P3=0
[OCLint (http://oclint.org) v0.10.2]
La función general es así, si tiene alguna pregunta durante el proceso de uso, comuníquese con nosotros.
Enlace original: https://blog.yourtion.com/static-code-analysis-ios-using-oclint.html