Ts Screener — !!hot!!

private analyzeFile(filePath: string): FileReport const sourceText = readFileSync(filePath, 'utf-8'); const sourceFile = ts.createSourceFile(filePath, sourceText, ts.ScriptTarget.Latest, true);

);

# 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 ✅ ts screener

program.parse(); import ScreenerReport from '../types.js'; export function consoleReporter(report: ScreenerReport): void console.log('\n📊 TypeScript Screener Report\n'); console.log( ✅ Files scanned: $report.summary.filesScanned ); console.log( 🎯 Type coverage: $report.summary.typeCoveragePercent% ); console.log( ⚠️ Total 'any' usage: $report.summary.totalAnyUsage ); console.log( ❓ Missing type annotations: $report.summary.totalMissingTypes ); console.log( 🏁 Status: $report.summary.passed ? 'PASSED ✅' : 'FAILED ❌' ); const sourceFile = ts.createSourceFile(filePath

program .name('ts-screener') .description('Analyze TypeScript type coverage and any usage') .option('-i, --include <patterns>', 'glob patterns to include', ' /*.ts,tsx') .option('-e, --exclude <patterns>', 'glob patterns to exclude', 'node_modules/ ') .option('--target-coverage <number>', 'minimum type coverage %', '80') .option('--json', 'output as JSON') .option('--no-implicit-any', 'fail on implicit any') .action(async (options) => const screener = new TypeScriptScreener( include: options.include.split(','), exclude: options.exclude.split(','), targetTypeCoverage: parseFloat(options.targetCoverage), noImplicitAny: options.noImplicitAny, ); import ScreenerReport from '../types.js'

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) {}