{"id":12423205,"name":"throwsanalyzer","ecosystem":"nuget","description":"A production-ready Roslyn analyzer providing comprehensive exception handling analysis for C# code with 30 diagnostic rules and 16 automated code fixes.\n\nFeatures:\n• 30 diagnostic rules covering all exception patterns\n• 16 automated code fixes for one-click issue resolution\n• Exception flow analysis across method calls\n• Async/await exception pattern detection\n• Iterator (yield) exception analysis\n• Lambda and event handler exception detection\n• Best practices and design pattern suggestions\n• Hot path performance analysis\n• Result\u003cT\u003e pattern recommendations\n\nDetects:\n• Unhandled exceptions and missing try-catch blocks\n• Rethrow anti-patterns (throw ex vs throw)\n• Unreachable and empty catch clauses\n• Async void exceptions and unobserved tasks\n• Exceptions in loops (performance issues)\n• Custom exception naming violations\n• Exception-based control flow\n• Undocumented public API exceptions\n\nAutomated Fixes:\n• Wrap code in try-catch blocks\n• Fix rethrow statements to preserve stack traces\n• Convert async void to async Task\n• Add XML exception documentation\n• Rename exception types to follow conventions\n• Move validation outside loops\n• Add Task observation (await, continuations)\n• And more!\n\nPerfect for: Code quality enforcement, automated code reviews, CI/CD integration, and teaching exception best practices.","homepage":"https://github.com/wieslawsoltes/ThrowsAnalyzer","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/wieslawsoltes/ThrowsAnalyzer","keywords_array":["roslyn","analyzer","csharp","exceptions","throw","try-catch","diagnostic","code-fixes","async","await","iterator","lambda","best-practices","code-quality","static-analysis"],"namespace":null,"versions_count":2,"first_release_published_at":"2025-10-27T13:47:47.087Z","latest_release_published_at":"2025-10-27T15:02:41.860Z","latest_release_number":"1.0.0-beta.2","last_synced_at":"2026-09-19T08:53:50.142Z","created_at":"2025-10-27T15:16:43.257Z","updated_at":"2026-09-22T03:19:40.822Z","registry_url":"https://www.nuget.org/packages/throwsanalyzer/","install_command":"Install-Package throwsanalyzer","documentation_url":null,"metadata":{"copyright":"Copyright © 2025 Wiesław Šoltés","license_info":{"type":"expression","text":"MIT","version":null},"license_url":"https://licenses.nuget.org/MIT","require_license_acceptance":false,"readme":"README.md","repository":{"type":"git","url":"https://github.com/wieslawsoltes/ThrowsAnalyzer","branch":null,"commit":"44f6619bbcbe4774c24dae77f0ff033823c59752"},"development_dependency":true,"serviceable":false,"framework_assemblies":[],"package_types":[],"release_notes":"v1.0.0 - Initial Release\n• 30 comprehensive diagnostic rules (THROWS001-030)\n• 16 automated code fix providers\n• Exception flow analysis with call graph tracking\n• Async/await exception pattern detection\n• Iterator (yield) exception analysis\n• Lambda and event handler exception detection\n• Best practices analyzers (naming, hot paths, Result pattern)\n• Full support for all C# executable member types\n• Batch fixing support (Fix All in Document/Project/Solution)\n• Comprehensive documentation and examples\n• 269 unit tests with 100% pass rate"},"repo_metadata":{"id":321037781,"uuid":"1082750678","full_name":"wieslawsoltes/ThrowsAnalyzer","owner":"wieslawsoltes","description":"A Roslyn-based C# analyzer that detects exception handling patterns in your code","archived":false,"fork":false,"pushed_at":"2025-11-08T10:44:37.000Z","size":775,"stargazers_count":75,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-09-19T05:27:11.924Z","etag":null,"topics":["csharp","dotnet","exception-reporting","exceptions","roslyn","roslyn-analyzer","roslyn-analyzers"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wieslawsoltes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-24T17:58:28.000Z","updated_at":"2026-06-16T22:37:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"ecb157c3-77f0-4e48-92c1-6e571b43f157","html_url":"https://github.com/wieslawsoltes/ThrowsAnalyzer","commit_stats":null,"previous_names":["wieslawsoltes/throwsanalyzer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wieslawsoltes/ThrowsAnalyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FThrowsAnalyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FThrowsAnalyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FThrowsAnalyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FThrowsAnalyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wieslawsoltes","download_url":"https://codeload.github.com/wieslawsoltes/ThrowsAnalyzer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FThrowsAnalyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":341189360,"owners_count":37577008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-09-22T02:00:07.665Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"wieslawsoltes","name":"Wiesław Šoltés","uuid":"2297442","kind":"user","description":"","email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2297442?v=4","repositories_count":171,"last_synced_at":"2024-05-01T10:36:40.189Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/wieslawsoltes","funding_links":["https://github.com/sponsors/wieslawsoltes"],"total_stars":5023,"followers":0,"following":0,"created_at":"2022-11-04T10:33:25.322Z","updated_at":"2024-05-01T10:36:50.598Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wieslawsoltes","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wieslawsoltes/repositories"},"tags":[]},"repo_metadata_updated_at":"2026-09-22T03:19:40.822Z","dependent_packages_count":0,"downloads":null,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":6.559197033443151,"dependent_packages_count":17.59104695491586,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":12.075121994179506},"purl":"pkg:nuget/throwsanalyzer","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nuget/throwsanalyzer","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nuget/throwsanalyzer","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nuget/throwsanalyzer/dependencies","status":null,"funding_links":["https://github.com/sponsors/wieslawsoltes"],"critical":null,"issue_metadata":{"last_synced_at":"2026-09-19T00:36:30.660Z","issues_count":0,"pull_requests_count":0,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":0,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FThrowsAnalyzer/issues","maintainers":[],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/throwsanalyzer/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/throwsanalyzer/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/throwsanalyzer/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/throwsanalyzer/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/throwsanalyzer/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/throwsanalyzer/codemeta","maintainers":[]}