{"id":26907318,"url":"https://github.com/thindil/nimalyzer","last_synced_at":"2025-04-01T11:55:53.043Z","repository":{"id":65642622,"uuid":"585855390","full_name":"thindil/nimalyzer","owner":"thindil","description":"Mirror of a static code analyzer for Nim programming language","archived":false,"fork":false,"pushed_at":"2024-04-23T05:18:19.000Z","size":1504,"stargazers_count":28,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"trunk","last_synced_at":"2024-05-02T02:32:31.574Z","etag":null,"topics":["linter","nim","static-analysis"],"latest_commit_sha":null,"homepage":"https://www.laeran.pl.eu.org/repositories/nimalyzer/home","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thindil.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"license.txt","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},"funding":{"liberapay":"thindil","open_collective":"laeran","github":"thindil"}},"created_at":"2023-01-06T09:04:13.000Z","updated_at":"2024-06-01T06:25:24.401Z","dependencies_parsed_at":"2024-02-12T08:11:27.343Z","dependency_job_id":"b905b43f-17a3-4e3e-b3c0-3a1e9dc9b706","html_url":"https://github.com/thindil/nimalyzer","commit_stats":{"total_commits":1482,"total_committers":1,"mean_commits":1482.0,"dds":0.0,"last_synced_commit":"901d498f440ca79ba29ed939ae971bd32e88129a"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thindil%2Fnimalyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thindil%2Fnimalyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thindil%2Fnimalyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thindil%2Fnimalyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thindil","download_url":"https://codeload.github.com/thindil/nimalyzer/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246635961,"owners_count":20809331,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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"}},"keywords":["linter","nim","static-analysis"],"created_at":"2025-04-01T11:55:52.585Z","updated_at":"2025-04-01T11:55:53.027Z","avatar_url":"https://github.com/thindil.png","language":"Nim","funding_links":["https://liberapay.com/thindil","https://opencollective.com/laeran","https://github.com/sponsors/thindil"],"categories":["Development Tools"],"sub_categories":["Static Analysis"],"readme":"### General information\n\nNimalyzer is a static code analyzer for [Nim](https://github.com/nim-lang/Nim)\nprogramming language. It allows checking a Nim source code against predefined\nrules. Its design is inspired by [AdaControl](https://www.adalog.fr/en/adacontrol.html).\nNimalyzer can be used to enforce some design patterns or ensure that some\nlanguage constructs are present in a code, or not. For example, it can check if\nall procedures have defined proper pragmas. Additionally, it can be used as an\nadvanced search through a code tool, for example find all public variables type\nof *int* with name which starts with *newVar*. It is controlled by\nconfiguration files containing a set of rules, their parameters and options\nrelated to the program behavior.\n\nAt this moment, the project is in **beta** stage, most of its features are added,\nbut it still should have a nice amount of bugs.\n\nIf you read this file on GitHub: **please don't send pull requests here**. All will\nbe automatically closed. Any code propositions should go to the\n[Fossil](https://www.laeran.pl.eu.org/repositories/nimalyzer) repository.\n\n**IMPORTANT:** If you read the file in the project code repository: This\nversion of the file is related to the future version of the program. It may\ncontain information not present in released versions of the program. For\nthat information, please refer to the README.md file included into the release.\n\n### Usage\n\n1. To use Nimalyzer with your project, first you have to create a configuration\n   file for it. For the configuration file syntax, and the list of available\n   rules, please refer to the project's documentation, available as\n   reStructuredText in [doc](doc) directory. In your configuration file you\n   will have to set at least one source file to check and at least one rule to\n   use.\n\n2. Run Nimanalyzer with path to your configuration file as the argument. For example:\n   `nimalyzer config/nimalyzer.cfg` and just read its output. ;)\n\n### How to install\n\n#### Standalone binaries\n\nStandalone binaries are available for FreeBSD, Linux and Windows in 64-bit\nversions. They are available on the Download page. Just download and extract\nthem to the selected directory.\n\n#### Build from the source\n\nYou will need:\n\n* [Nim compiler](https://nim-lang.org/install.html) and its source code. If you\n  installed the compiler from website or via *choosenim*, you should have installed\n  it. Otherwise, you may need to install it manually either with *nimble install\n  compiler@[yourCompilerVersion]* or with your package manager.\n* [Contracts package](https://github.com/Udiknedormin/NimContracts)\n* [Colored_logger package](https://github.com/4zv4l/colored_logger)\n\nYou can install them manually or by using [Nimble](https://github.com/nim-lang/nimble).\nIn that second option, type `nimble install nimalyzer` to install the program\nand all dependencies. Generally it is recommended to use `nimble release` to\nbuild the project in release (optimized) mode or `nimble debug` to build it\nin the debug mode.\n\n#### Build the project's documentation\n\nTo create HTML version of the project's documentation run command `nimble docs`\nin the main project directory.\n\nIf you want to update the project's documentation, usually not needed, you have\nto use *gendoc* tool included into the project.\n\n1. Build the tool *gendoc*. In the main project's directory, execute command\n   `nimble tools`. It will create needed tools and put them into *bin*\n   directory.\n\n2. In the man project's directory execute command `bin/gendoc`. It will update\n   the project's documentation from the default configuration file and from the\n   project's source code.\n\n### License\n\nThe project released under 3-Clause BSD license.\n\n---\nThat's all for now, as usual, I have probably forgotten about something important ;)\n\nBartek thindil Jasicki\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthindil%2Fnimalyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthindil%2Fnimalyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthindil%2Fnimalyzer/lists"}