secure_code_scanner 1.0.2
secure_code_scanner: ^1.0.2 copied to clipboard
Enterprise-grade Flutter/Dart SAST tool with 18 security detectors. Finds hardcoded secrets, insecure storage, SQL injection, missing SSL pinning, Firebase misconfigs, weak JWT handling, WebView flaws [...]
example/secure_code_scanner_example.dart
import 'package:secure_code_scanner/secure_code_scanner.dart';
/// Example demonstrating programmatic use of the secure_code_scanner package.
Future<void> main() async {
print('š Secure Code Scanner ā Programmatic Usage Example\n');
// āā 1. Quick scan with auto-printed report āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
final service = ScanService();
// Scan the current directory (the package itself as a demo)
final report = await service.scan('.');
// āā 2. Access results programmatically āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print('š Results Summary:');
print(' Files scanned : ${report.totalFilesScanned}');
print(' Issues found : ${report.totalVulnerabilities}');
print(' Score : ${report.securityScore}/100');
print(' Grade : ${service.gradeForScore(report.securityScore)}');
print(' Status : ${report.projectStatus.label}');
print('');
// āā 3. Inspect individual vulnerabilities āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
if (report.vulnerabilities.isNotEmpty) {
print('š Top 3 Issues:');
final top = report.vulnerabilities.take(3);
for (final v in top) {
print(' [${v.riskLevel.label}] ${v.type}');
print(' File: ${v.filePath}');
if (v.lineNumber != null) print(' Line: ${v.lineNumber}');
print(' Fix : ${v.recommendation}');
print('');
}
} else {
print('ā
No vulnerabilities found! Great job keeping the code secure.');
}
// āā 4. Group by file āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
if (report.byFile.isNotEmpty) {
print('š Files with issues:');
report.byFile.forEach((file, issues) {
print(' $file ā ${issues.length} issue(s)');
});
}
// āā 5. Use individual detectors manually āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print('\nš¬ Running individual detector example:');
final apiDetector = ApiKeyDetector();
const sampleCode = '''
const apiKey = "sk-1234567890abcdef1234567890abcdef";
final url = Uri.parse("https://api.example.com/data");
''';
final issues = apiDetector.detect('sample.dart', sampleCode);
if (issues.isNotEmpty) {
print(' ApiKeyDetector found ${issues.length} issue(s) in sample code.');
} else {
print(' ApiKeyDetector: No issues in sample code.');
}
}