fortran — правило для Cursor: что делает и как установить
Правило задаёт стиль для современного Fortran: модули, типы, массивы, тесты и сборка. Оно пригодится при разработке научного кода в Cursor.
.cursor/rules/fortran.mdcЧто делает fortran
Правило направляет Cursor к современному Fortran 2003, 2008 или новее. Оно требует implicit none, явных интерфейсов через модули, отдельных kind-параметров для чисел и понятных имён. Устаревшие COMMON, числовые метки и управление через GOTO предлагается не использовать.
Для процедур задаются intent(in), intent(out) или intent(inout), а импорты ограничиваются через use, only:. Для массивов предпочтительны allocatable, с проверкой состояния выделения и размеров. Правило также охватывает тесты публичных процедур, граничные случаи, численные допуски и сборку через CMake, fpm или Make.
Оно применяется к Fortran-файлам, CMakeLists.txt, *.cmake и Makefile, но alwaysApply имеет значение false. Код в файлах вне этих шаблонов автоматически под это правило не попадёт.
Какие задачи решает
- структурировать Fortran-код через модули
- задать kind-параметры для чисел
- проверить intent и интерфейсы процедур
- избежать ошибок с allocatable-массивами
- добавить тесты для численных случаев
Примеры запросов агенту
- Перепиши эту процедуру в стиле современного Fortran и добавь явные
intentдля аргументов. - Проверь модуль
solver.f90: найди проблемы с типами, массивами и импортами. - Добавь тесты для граничных условий и проверь численные допуски в сборке через
CMakeLists.txt.
Как установить fortran
Вручную: положить файлы
.cursor/rules/fortran.mdcВо frontmatter: description, globs, alwaysApply
Вручную: положить файлы
.claude/rules/fortran.mdПоле paths во frontmatter ограничивает файлы: globs из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.github/instructions/fortran.instructions.mdПоле applyTo задаёт, к каким файлам применять: globs из источника → applyTo
Вручную: положить файлы
.devin/rules/fortran.mdВручную: положить файлы
.clinerules/fortran.mdПо шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules
Вопросы о fortran
Как установить fortran в Cursor?
Сохраните правило в файле .cursor/rules/fortran.mdc в проекте Cursor.
Что делает правило fortran?
Оно задаёт рекомендации для модулей, явных интерфейсов, kind-параметров, памяти, тестов и сборки в Fortran-проекте.
Какие файлы обрабатывает правило fortran?
Правило применяется к файлам с расширениями .f, .f90, .f95, .f03, .f08, .for, .ftn, а также к CMakeLists.txt, *.cmake и Makefile.
Исходный текст
fortran.mdc · CC0-1.0
--- description: Modern Fortran rules for scientific computing, modules, explicit interfaces, kind parameters, memory safety, and testing globs: ["**/*.f", "**/*.f90", "**/*.f95", "**/*.f03", "**/*.f08", "**/*.for", "**/*.ftn", "CMakeLists.txt", "*.cmake", "Makefile"] alwaysApply: false --- # Fortran Programming Guidelines ## Basic Principles - Use modern Fortran standards such as Fortran 2003, 2008, or newer. - Use `implicit none` in every program unit. - Put procedures in modules to provide explicit interfaces. - Keep modules focused and place each major module in its own file. - Prefer clear, structured code over clever language tricks. - Avoid obsolete features such as COMMON blocks, GOTO-heavy control flow, and numeric labels. ## Kinds and Types - Define numeric kind parameters in one shared module, such as `kind_mod`. - Use `real(kind=dp)` or the project-approved real kind for floating point values. - Use `integer(kind=i4)` or the project-approved integer kind for integer values. - Define constants such as pi explicitly. - Include units in comments for physical quantities. - Use derived types to group related data instead of passing many primitive arguments. ## Naming and Style - Use lowercase for language keywords and most identifiers. - Use underscores for multi-word names. - Avoid names that differ only by case. - Use descriptive names for procedures and state. - Repeat the procedure or module name after `end` statements. - Keep indentation consistent in `do`, `if`, `select case`, and module blocks. ## Procedures - Keep subroutines and functions short and single-purpose. - Use `intent(in)`, `intent(out)`, or `intent(inout)` for every dummy argument. - Keep functions free of side effects whenever possible. - Prefer early validation and clear returns over deep nesting. - Use `use, only:` when importing from modules. ## Memory and Arrays - Prefer allocatable arrays over pointers unless pointer semantics are required. - Check allocation state and array sizes before use. - Deallocate allocatable arrays when their lifetime is not naturally scoped. - Specify array bounds clearly when they matter. - Avoid unnecessary dynamic allocation in hot loops. ## Testing and Build - Use CMake, fpm, Make, or the project-standard build system consistently. - Compile with warnings enabled and treat important warnings as failures in CI. - Add unit tests for public procedures and integration tests for numerical workflows. - Test boundary conditions, invalid inputs, and representative scientific cases. - Verify numerical tolerances explicitly rather than relying on exact floating point equality. ## Common Mistakes - Do not declare variables after executable code unless using a block construct. - Do not assume `random_number` is a function; it is a subroutine. - Do not write to stdout from pure procedures. - Do not declare the same variable twice in the same scope. - Do not assume pi, dp, or project kinds already exist without importing or defining them.
© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules