Ce face dart analyze
dart analyze citește codul și găsește problemele înainte de rulare: erori de tip, nume greșite, importuri și variabile nefolosite, cod care nu se execută niciodată. Fiecare problemă are un nivel (error, warning, info), poziția (fișier:rând:coloană), un mesaj și numele regulii.
Regulile de stil (lints) vin din analysis_options.yaml; proiectele create cu dart create includ setul recomandat din pachetul lints. Acolo poți activa reguli noi sau ignora unele.
Codul de ieșire este nenul la erori și avertismente, deci comanda poate opri un CI. Cu --fatal-infos și infos-urile opresc verificarea. Toate exemplele din această secțiune trec prin dart analyze --fatal-infos --fatal-warnings înainte de rulare.
Parametri
| Parametru | Descriere |
|---|---|
--fatal-infos |
Iese cu cod nenul și pentru probleme de nivel info. |
--fatal-warnings / --no-fatal-warnings |
Dacă avertismentele dau cod de ieșire nenul (implicit da). |
--format=json |
Rezultatul în format JSON, pentru alte unelte. |
Exemple
Exemplul 1: O eroare și două avertismente
lenght este o greșeală de scriere (eroare); importul și variabila mesaj nu sunt folosite (avertismente).
// lib/reduceri.dart
import 'dart:math';
double aplicaReducere(double pret, int procent) {
var final_ = pret * (100 - procent) / 100;
String mesaj = 'Reducere aplicată';
return final_;
}
int puncte(String client) {
return client.lenght * 10;
}
// în terminal:
// dart analyze lib/reduceri.dart
Rezultat în terminal
Analyzing reduceri.dart...
error - reduceri.dart:10:17 - The getter 'lenght' isn't defined for the type 'String'. Try importing the library that defines 'lenght', correcting the name to the name of an existing getter, or defining a getter or field named 'lenght'. - undefined_getter
warning - reduceri.dart:1:8 - Unused import: 'dart:math'. Try removing the import directive. - unused_import
warning - reduceri.dart:5:10 - The value of the local variable 'mesaj' isn't used. Try removing the variable or using it. - unused_local_variable
3 issues found.
Exemplul 2: Un info și efectul lui –fatal-infos
Numele PretFinal încalcă regula de stil non_constant_identifier_names. Codul de ieșire este 0 fără opțiune și 1 cu --fatal-infos.
dart analyze; echo "cod de ieșire: $?"
dart analyze --fatal-infos; echo "cod de ieșire: $?"
Rezultat în terminal
Analyzing magazin...
info - lib/reduceri.dart:2:7 - The variable name 'PretFinal' isn't a lowerCamelCase identifier. Try changing the name to follow the lowerCamelCase style. - non_constant_identifier_names
1 issue found.
cod de ieșire: 0
Analyzing magazin...
info - lib/reduceri.dart:2:7 - The variable name 'PretFinal' isn't a lowerCamelCase identifier. Try changing the name to follow the lowerCamelCase style. - non_constant_identifier_names
1 issue found.
cod de ieșire: 1
Exemplul 3: Proiect fără probleme
După ce redenumim variabila în pretFinal:
dart analyze
Rezultat în terminal
Analyzing magazin...
No issues found!
Greșeli frecvente
- Să ignori avertismentele pentru că „programul merge”: variabilele și importurile nefolosite ascund adesea o greșeală de logică.
// ignore: ...peste tot în loc să repari problema: folosește-l doar când ești sigur că regula greșește în acel loc.- Să crezi că
dart analyzerulează testele: verifică doar codul static; testele se rulează cudart test.
Comenzi înrudite
dart format: Rescrie automat codul Dart în stilul oficial: indentare, spații, rânduri de maxim 80 de caractere.dart run: Rulează un program Dart: un fișier, programul principal al proiectului sau un executabil dintr-un pachet.comentarii și documentare: Textul ignorat de compilator: // pe un rând, /* */ pe mai multe, și /// pentru documentația generată cu dart doc.dart create: Creează un proiect Dart nou dintr-un șablon: aplicație de consolă, pachet, server sau aplicație web.