27 repositorios
The use of a programming language's type system to verify API compatibility and correctness during compilation.
Distinct from Static Type Checking: The candidates are tied to specific languages like TypeScript or environment variables; this is a general architectural use of C++ static typing for API safety.
Explore 27 awesome GitHub repositories matching software engineering & architecture · Static Type Checking. Refine with filters or upvote what's useful.
This project is a comprehensive set of architectural and coding standards for organizing and maintaining high-quality JavaScript applications. It provides a framework for JavaScript project best practices across the full software development lifecycle, establishing unified guidelines for project organization and development. The guidelines cover specific standards for REST API design, utilizing resource-oriented interfaces and standardized HTTP methods. It also includes a web accessibility standard focused on semantic HTML and automated audits, alongside a defined Git workflow standard for br
Integrates static type checking into the development workflow to catch errors before execution.
This project is a JavaScript style guide and a set of coding standards designed to ensure codebase consistency. It provides a collection of best practices for writing maintainable and idiomatic code, focusing on variable naming, type checking, and execution context. The project serves as a static analysis guide, offering frameworks and guidelines for using linters and automated tools to identify bugs and verify code correctness before deployment. It establishes standards for formatting, syntax, and variable declarations to standardize code style across a project. The scope of the project cov
Implements type checking guidelines to verify variable consistency and prevent logic bugs.
Frontend Workshop from HTML/CSS/JS to TypeScript/React/Redux
Teaches adding static type checking with TypeScript to catch errors during development.
Phan es un analizador estático y verificador de tipos para PHP que identifica errores e incompatibilidades de tipo sin ejecutar el código. Sirve como una puerta de calidad para pipelines de integración continua y una herramienta para verificar la seguridad de tipos, comprobando específicamente tipos de unión, genéricos y formas de array. El proyecto se distingue por el uso de un demonio en segundo plano y una implementación del Protocolo de Servidor de Lenguaje (LSP), que proporcionan diagnósticos y navegación en tiempo real dentro de los editores. También cuenta con un sistema de supresión basado en línea base que permite a los desarrolladores registrar errores existentes en un archivo de instantánea para centrarse exclusivamente en nuevas regresiones. El motor de análisis cubre una amplia gama de capacidades, incluyendo la detección de código muerto, la validación de compatibilidad de lenguaje a través de diferentes versiones de PHP y la inferencia de tipos de variables y plantillas. Admite análisis extensible a través de un sistema de plugins y proporciona correcciones de código automatizadas para un subconjunto de problemas detectados. Los usuarios pueden iniciar el proceso generando un archivo de configuración con niveles de rigor seleccionables para validar gradualmente su base de código.
Check that assigned values and return types match a defined union of multiple possible types.
Groovy es un lenguaje de programación para la JVM y un framework de metaprogramación que proporciona un entorno compatible con Java para construir aplicaciones. Funciona como un lenguaje de scripting dinámico y una herramienta para crear lenguajes específicos de dominio (DSL), permitiendo la ejecución de scripts personalizados y la creación de mini-lenguajes especializados con una sintaxis concisa. El proyecto se distingue por su capacidad para modificar el comportamiento del programa y las definiciones de clases mediante metaprogramación tanto en tiempo de compilación como en tiempo de ejecución. Utiliza un modelo de tipado híbrido que combina la resolución dinámica de métodos con un chequeo de tipos estático opcional para equilibrar la flexibilidad y el rendimiento de ejecución. El lenguaje cubre una amplia gama de capacidades, incluyendo patrones de programación funcional, transformaciones de árboles de sintaxis abstracta (AST) y la integración directa de bibliotecas de Java. También incluye utilidades de seguridad para prevenir inyecciones SQL, asegurar el parsing de XML y garantizar un parsing seguro de datos estructurados. El sistema traduce la sintaxis de alto nivel a bytecode de la JVM para su ejecución en cualquier Java Virtual Machine compatible.
Performs compile-time type validation to bypass dynamic dispatch and increase execution performance.
Este proyecto es una librería de patrones de diseño en TypeScript y guía de arquitectura. Proporciona una colección de patrones de arquitectura de software estándar de la industria implementados en TypeScript para demostrar la creación y comunicación de objetos. La librería sirve como referencia práctica para aplicar principios de diseño orientado a objetos, utilizando tipado estático para hacer cumplir los requisitos estructurales de estos patrones durante la fase de compilación. El contenido cubre la implementación de patrones creacionales para desacoplar la instanciación de objetos de la lógica de negocio, patrones estructurales para organizar clases y objetos en composiciones más grandes, y patrones de comportamiento para gestionar la comunicación de objetos y la distribución de responsabilidades.
Uses the TypeScript type system to verify and enforce the structural correctness of design patterns at compile time.
Crab es un lenguaje de programación de sistemas seguro para la memoria y un compilador ahead-of-time diseñado para software de alto rendimiento. Utiliza un sistema de tipos basado en reglas estrictas de propiedad y préstamo para evitar errores de acceso a memoria en tiempo de compilación. La cadena de herramientas incluye un generador de documentación automatizado que produce manuales de referencia técnica y guías de API mediante el análisis de anotaciones de código fuente estructuradas. También cuenta con una herramienta de gestión de dependencias para resolver grafos de bibliotecas externas y garantizar compilaciones de proyectos consistentes. El proyecto cubre la automatización de compilación de software, verificación de tipos estática y análisis estático de múltiples pasadas para verificar restricciones antes de generar binarios nativos de la máquina.
Verifies data types during the compilation process to catch errors before runtime.
Typeshed es una colección de definiciones de tipos estáticos y stubs para la biblioteca estándar de Python y paquetes de terceros. Sirve como un recurso estandarizado para analizadores estáticos y entornos de desarrollo integrados (IDE) para validar la corrección del código y proporcionar autocompletado basado en tipos sin modificar el código fuente original de las bibliotecas. El proyecto se centra en la creación y mantenimiento de archivos de pistas de tipo externos que separan las anotaciones de tipo de la implementación en tiempo de ejecución. Utiliza un sistema para versionar y mapear estos stubs a versiones específicas de paquetes en tiempo de ejecución para mantener la compatibilidad. El repositorio incluye una suite de validación para garantizar la precisión de estas definiciones. Esto cubre la validación de tiempo de ejecución a stub para identificar discrepancias entre tipos declarados y reales, verificación de la estructura de directorios y pruebas de regresión para evitar la reintroducción de errores de verificación de tipos conocidos.
Provides the type definitions necessary for static analysis tools to verify API compatibility and code correctness without execution.
Pytype es una herramienta de análisis de código estático y motor de inferencia de tipos para Python. Funciona como un analizador de tipos estático que detecta desajustes de tipos y verifica anotaciones de tipos sin requerir pistas manuales completas, sirviendo también como un generador de stubs de tipos para producir archivos de definición independientes. El proyecto se distingue por determinar automáticamente los tipos de variables y funciones mediante un análisis de patrones de código y asignaciones. Este motor de inferencia permite la verificación estructural del código y la generación de stubs de tipos que describen las interfaces de módulos y funciones. El sistema cubre operaciones amplias de análisis estático, incluyendo validación estructural de jerarquías de clases y llamadas a funciones, y seguimiento de símbolos para detectar errores de espacio de nombres y violaciones de acceso a atributos. También proporciona primitivas de verificación de tipos para aplicar anotaciones y un sistema de tipos capaz de modelar estructuras de datos complejas utilizando uniones y opcionales.
Checks provided type hints against language standards to identify mismatches and logic errors.
Troposphere es una biblioteca de Python para crear y validar programáticamente plantillas de infraestructura como código. Sirve como un generador para plantillas de AWS CloudFormation y OpenStack, permitiendo que los recursos en la nube se definan como objetos dentro de un lenguaje de programación de propósito general en lugar de a través de marcado JSON o YAML sin procesar. El proyecto se centra en la validación de recursos en la nube mediante la verificación de nombres de propiedades y tipos de datos durante el proceso de construcción de la plantilla. Este sistema identifica errores de configuración y campos obligatorios faltantes antes de que la infraestructura se exporte para su despliegue. La biblioteca cubre una amplia gama de modelado de infraestructura en la nube, incluida la definición de recursos de computación, almacenamiento, redes y seguridad. Proporciona utilidades para convertir estos objetos definidos programáticamente en formatos de exportación JSON o YAML estructurados.
Uses the programming language type system to validate property names and data types during instantiation.
Closure Library es una librería estándar de JavaScript y un conjunto de herramientas diseñado para construir aplicaciones web a gran escala. Proporciona una colección de módulos de utilidad principales y APIs estandarizadas para simplificar la lógica de aplicación compleja y la gestión de estado. El proyecto está construido como un framework modular que utiliza un sistema de módulos basado en espacios de nombres para evitar la contaminación del ámbito global. Está diseñado específicamente para su uso con Closure Compiler para permitir la eliminación agresiva de código muerto y la minificación, reduciendo el tamaño final de entrega en producción. Para garantizar la fiabilidad en proyectos grandes, la librería utiliza anotaciones JSDoc para la verificación de tipos estáticos, validando los contratos de API antes de la ejecución. La librería cubre la compatibilidad entre navegadores mediante una capa de polyfills y detección de características. Proporciona una arquitectura estructurada para el desarrollo frontend empresarial, centrándose en un comportamiento consistente en diferentes entornos de navegador y contextos de ejecución, incluyendo Node.js.
Employs JSDoc annotations for static type checking to verify API contracts before execution.
Este proyecto es una guía completa y recurso educativo para el lenguaje TypeScript. Cubre los principios fundamentales del lenguaje, incluyendo su sistema de tipos estructural, análisis de tipos estáticos y el proceso de transpilación de archivos fuente tipados a JavaScript. El material detalla cómo modelar datos complejos y lógica de tipos reutilizable utilizando genéricos, tipos condicionales y tipos mapeados. También explica el uso de archivos de declaración para proporcionar seguridad de tipos para librerías externas de JavaScript y la integración de verificación de tipos en proyectos de JavaScript existentes mediante anotaciones JSDoc. El alcance del contenido se extiende a patrones de programación orientada a objetos, manipulación del DOM y la configuración de comportamientos del compilador. Incluye orientación sobre la gestión de interoperabilidad de módulos, configuración de pipelines de construcción y utilización de inteligencia de editor para una mejor productividad del desarrollador.
Enables static type checking of standard JavaScript files using JSDoc annotations.
Scala.js es un compilador y cadena de herramientas de lenguaje multiplataforma que transforma código fuente de Scala en JavaScript o WebAssembly. Funciona como una herramienta tipada estáticamente para el ecosistema JavaScript, permitiendo el desarrollo de aplicaciones para navegadores web y entornos Node.js. El proyecto sirve como framework de interoperabilidad con JavaScript, permitiendo la creación de fachadas y bindings tipados de forma segura para interactuar con librerías externas y objetos globales. Proporciona mecanismos para la invocación de JavaScript tanto estática como dinámica, incluyendo la generación de bindings de TypeScript y la capacidad de exportar lógica interna para su uso en código JavaScript externo. La cadena de herramientas incluye una herramienta de construcción frontend para empaquetado de producción y optimización de salida, incluyendo eliminación de código muerto y división de módulos. Cubre una amplia superficie de capacidades, incluyendo verificación de tipos de elementos DOM para desarrollo de UI, intercambio de código multiplataforma para desarrollo full-stack y varios frameworks de pruebas para verificar artefactos de construcción optimizados. Los scripts compilados pueden ejecutarse directamente dentro de un entorno de línea de comandos utilizando un intérprete de JavaScript.
Provides a statically typed development environment that verifies API compatibility and correctness for the JavaScript ecosystem.
Strawberry es una biblioteca GraphQL con tipado fuerte para Python que permite el diseño de esquemas utilizando anotaciones de tipo y dataclasses de Python. Funciona como un servidor GraphQL asíncrono y motor de ejecución, proporcionando un puente para exponer esquemas a través de frameworks web compatibles con ASGI como FastAPI, Django, Flask y Litestar. El proyecto implementa GraphQL Federation, permitiendo la creación de esquemas y entidades distribuidas que se fusionan en un supergrafo unificado a través de múltiples servicios. También incluye un kit de herramientas dedicado para la especificación Relay, soportando la identificación global de objetos y la paginación basada en conexiones. El framework cubre un amplio conjunto de capacidades, incluyendo streaming de datos en tiempo real mediante WebSockets y Server-Sent Events, mapeo de modelos Pydantic y generación automática de código. Proporciona herramientas integradas para seguridad y observabilidad, como limitación de complejidad de consultas, control de acceso basado en roles y rastreo de métricas de ejecución. Los desarrolladores pueden realizar prototipos utilizando un servidor de desarrollo integrado con una interfaz de inspección de esquemas interactiva.
Validates schema definitions during development using a static analysis plugin to catch type errors.
Remax es un framework de UI multiplataforma y motor para construir mini programas usando React. Funciona como un runtime que traduce componentes y hooks de React a elementos nativos de mini programas, evitando la necesidad de compilación estática. El framework proporciona un entorno de desarrollo con tipado seguro para asegurar la fiabilidad a través de componentes de UI multiplataforma. Permite la creación de mini programas multiplataforma desde un único código base mapeando árboles de componentes React a estructuras nativas durante la ejecución. El sistema cubre el desarrollo de mini programas multiplataforma, incluyendo la construcción de UI con hooks funcionales y verificación de tipos estáticos para reducir errores en tiempo de ejecución.
Applies static type checking during development to ensure reliability and reduce runtime errors across components.
lua-language-server is a static analysis tool and type checker for the Lua language that implements the Language Server Protocol. It provides a system for detecting type mismatches, unused code, and logic errors in source files. The project features an inference-based type system that deduces variable types and supports optional annotations and meta files to enforce type safety. It allows for the definition of custom types and function signatures, including support for overloads and member visibility controls. The server provides a broad set of IDE capabilities, including real-time code auto
Analyzes variable and function types to detect potential mismatches before the code is executed.
Este proyecto es una referencia técnica y una colección de notas de análisis interno centradas en el runtime y compilador del lenguaje Go. Proporciona un desglose detallado de los aspectos internos del lenguaje, cubriendo la gestión de memoria, la recolección de basura (garbage collection) y el modelo de ejecución del programador. El material se distingue por proporcionar inmersiones profundas en detalles del sistema de bajo nivel, incluyendo una referencia para instrucciones de ensamblador de Go, uso de registros e interfaz de llamadas al sistema. Analiza específicamente la implementación interna de primitivas de concurrencia, como el mecanismo de programación de goroutines, operaciones de canales e implementaciones de bloqueos de mutex. La cobertura se extiende a la teoría de construcción de compiladores, incluyendo análisis léxico y sintáctico, así como la mecánica del sistema de tipos y la gestión de interfaces. También detalla varias técnicas de optimización de rendimiento, utilidades de diagnóstico de runtime para rastreo de pila (stack tracing) y primitivas de E/S de red.
Analyzes the compiler's ability to verify type consistency and variable scope during compilation.
Sorbet is a static analysis tool and type checker designed for Ruby codebases. It identifies type inconsistencies, potential bugs, and logic errors by examining source code without execution, helping to improve software reliability and maintainability in large-scale projects. The system employs a constraint-based type inference engine that evaluates expressions against defined annotations to validate data structures. To support rapid development, it utilizes incremental analysis and caching to provide feedback by processing only modified files and their dependencies. Beyond static analysis,
Provides a static type checker that identifies type inconsistencies and enforces safety rules in Ruby codebases.
flow-typed is a type definition manager, repository, and library designed to enable static type checking for third-party JavaScript libraries. It provides a curated collection of external type declarations that allow Flow projects to maintain type safety and error detection for non-typed dependencies. The project centers on a command-line interface used to install and update library type definitions from a remote source. This manager resolves compatible type versions based on a project's dependencies and maps them to local directories for use by a static type checker. Beyond type checking, t
Enables static analysis and error detection in Flow projects by adding type definitions for third-party libraries.
Vulkan-Hpp is a header-only C++ binding library for the Vulkan graphics and compute API. It provides a type-safe wrapper around the Vulkan C API, allowing developers to interface with GPU hardware through a C++ interface that introduces no runtime CPU overhead. The library utilizes Resource Acquisition Is Initialization patterns to manage the lifecycle of Vulkan handles and objects, automating the release of GPU resources. It replaces C-style enumerations and bit-fields with strong typing and static type checking to catch invalid API parameter assignments during compilation. The project cove
Leverages the C++ type system to validate API compatibility during compilation instead of at runtime.