📄 src/api/client.ts Missing types: Missing type: data, Missing type: config 'any' usage count: 2 This gives you a production-ready, extensible TypeScript quality gate. Want me to add a or IDE plugin next?
private checkStrictOptions(sourceFile: ts.SourceFile): string[] const errors: string[] = []; if (this.options.noImplicitAny) // Check compiler flags via parsing tsconfig.json if needed // Simplified: we already flagged implicitAnyLines
async run(): Promise<ScreenerReport> const files = this.resolveFiles(); const reports: FileReport[] = []; ts screener
"name": "ts-screener", "version": "1.0.0", "type": "module", "bin": "ts-screener": "./dist/cli.js" , "scripts": "build": "tsc", "start": "node dist/cli.js" , "dependencies": "commander": "^11.0.0", "glob": "^10.3.0", "typescript": "^5.0.0" , "devDependencies": "@types/node": "^20.0.0"
# Install npm install -g ts-screener Run in project ts-screener --include "src/**/*.ts" --target-coverage 90 JSON output ts-screener --json > report.json Fail on implicit any ts-screener --no-implicit-any ✅ Example Output 📊 TypeScript Screener Report ✅ Files scanned: 124 🎯 Type coverage: 94.2% ⚠️ Total 'any' usage: 3 ❓ Missing type annotations: 12 🏁 Status: PASSED ✅ 📄 src/api/client
import ScreenerReport from '../types.js'; export function jsonReporter(report: ScreenerReport): string return JSON.stringify(report, null, 2);
visit(sourceFile);
export type ScreenerReport = summary: filesScanned: number; totalAnyUsage: number; totalMissingTypes: number; typeCoveragePercent: number; passed: boolean; ; details: FileReport[]; ; import ts from 'typescript'; import glob from 'glob'; import readFileSync from 'fs'; import FileReport, ScreenerOptions, ScreenerReport from './types.js'; export class TypeScriptScreener { constructor(private options: ScreenerOptions) {}