Escaneo de código estático de proyectos iOS usando OClint

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  Clangde   compilación front-end que  Clang admite  C,  y   . Esta herramienta es compatible con nuestro desarrollo y depuración diarios.C++Objective-CSwiftOCSwift

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

XCherramienta

brew install xctool

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

Supongo que te gusta

Origin blog.csdn.net/u013772433/article/details/78184231
Recomendado
Clasificación