GithubHelp home page GithubHelp logo

dustinblackman / languagetool-code-comments Goto Github PK

View Code? Open in Web Editor NEW
31.0 5.0 4.0 548 KB

languagetool-code-comments integrates the LanguageTool API to parse, spell check, and correct the grammar of your code comments!

License: MIT License

Rust 88.50% Shell 4.14% Go 0.39% Lua 6.98%
cli developer-tools languagetool languagetool-linter neovim null-ls rust

languagetool-code-comments's Introduction

languagetool-code-comments

languagetool-code-comments

Build Status Release Coverage Status

languagetool-code-comments integrates the LanguageTool API to parse, spell check, and correct the grammar of your code comments!

Overview

Never will you submit a PR where you fat-fingered // This is a hck in your code again. LTCC can be integrated directly in your editor, or used in a linting fashion in your CI pipelines. Caching is built in to speed up processing new and edited docs.

Using the power of Tree Sitter, LTCC easily integrates with several programming languages. And if privacy is a concern, and you have some spare hardware lying around, LanguageTool offers a great way to self-host your own instance.

screenshot

languagetool-code-comments v0.6.3
Integrates the LanguageTool API to parse, spell check, and correct the grammar of your code
comments!

USAGE:
    languagetool-code-comments <SUBCOMMAND>

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    cache         Functionality around the LanguageTools result cache.
    check         Parses source code comments from the provided file and passes them to
                      LanguageTool, returning grammar and spelling mistakes if any.
    completion    Generates shell completions
    help          Print this message or the help of the given subcommand(s)

SUPPORTED LANGUAGES:
  - astro
  - bash
  - cpp
  - css
  - dockerfile
  - elixir
  - go
  - hcl
  - html
  - javascript
  - jsx
  - lua
  - make
  - nix
  - python
  - rust
  - sql
  - toml
  - tsx
  - typescript
  - yaml

Install

MacOS

brew install dustinblackman/tap/languagetool-code-comments

Debian / Ubuntu

curl -s https://apt.dustinblackman.com/KEY.gpg | apt-key add -
curl -s https://apt.dustinblackman.com/dustinblackman.list > /etc/apt/sources.list.d/dustinblackman.list
sudo apt-get update
sudo apt-get install languagetool-code-comments

Fedora / CentOS

dnf config-manager --add-repo https://yum.dustinblackman.com/config.repo
dnf install --nogpgcheck languagetool-code-comments

Nix

nix-env -f '<nixpkgs>' -iA nur.repos.dustinblackman.languagetool-code-comments

Arch Linux

yay -S languagetool-code-comments-bin

Windows

Chocolatey

choco install languagetool-code-comments --version=0.6.3

Scoop

scoop bucket add dustinblackman https://github.com/dustinblackman/scoop-bucket.git
scoop install languagetool-code-comments

Manual

Download the pre-compiled binaries and packages from the releases page and copy to the desired location.

Source

git clone https://github.com/dustinblackman/languagetool-code-comments.git
cd languagetool-code-comments
git submodule update --init --recursive
cargo install --path .

Usage

CLI

languagetool-code-comments check -l en-US --file /home/me/my-test-file.rs

Neovim

See ./tools/null-ls-config.lua

The above uses null-ls, and is based off the soon-to-be ltrs configuration. Once I feel languagetool-code-comments responses have stabilized, I'll attempt PRing the configs to null-rs itself.

Visual Studio Code

Coming Soon! Follow #1 for updates.

Development

Setup

git clone https://github.com/dustinblackman/languagetool-code-comments.git
cd languagetool-code-comments
git submodule update --init --recursive
cargo check

Adding a new language

Let's take the following steps to add Perl to languagetool-code-comments, as example which will take you from selecting the Tree Sitter config, to integrating the language in the repo, writing tests, and QAing. If you'd like to check out a complete example, see add Nix.

  1. Follow the setup for the project.
  2. Head over to the Tree Sitter Parsers docs and select the Perl parser.
  3. Add the repo as a submodule with git submodule add https://github.com/ganezdragon/tree-sitter-perl ./external/tree-sitter-perl
  4. Update build.rs by adding a configuration for Perl in the langs vec. Perl includes both a parser.c and scanner.cc, so the configuration would look like the following.
build_treesitter_grammar(
    "tree-sitter-perl",
    "tree-sitter-perl/src",
    vec!["parser.c", "scanner.cc"],
),
  1. Run cargo build to verify the configuration is set up correctly.
  2. Update parse.rs by adding fn tree_sitter_perl() - Language; to extern "C", Perl to the Languages enum, a case statement in get_language_config(), and an extension parser in get_language_from_filepath().
  3. Create a Perl file fixture in ./tests/fixtures, following the examples of the other languages.
  4. Update parse_test.rs with a test for Perl, following the examples of the other languages.
  5. Run cargo test to prove your tests work.
  6. Run cargo build and test the CLI works as expected with Perl.

languagetool-code-comments's People

Contributors

dustinblackman avatar georgeguimaraes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

languagetool-code-comments's Issues

Comments sent to LanguageTool are not stripped of their language-specific comment marks

For instance, for https://github.com/dustinblackman/languagetool-code-comments/blob/main/tests/fixtures/astro.astro#L7, the text that gets sent to the LanguageTool server for analysis is <!-- I am a comment number two. -->, where I would have expected that I am a comment number two. be sent.
This can result in LanguageTool reporting various language issues, such as a Do you wish to insert an arrow? typography issue.

Although I understand that stripping the language-specific comment marks may not be trivial (because it is language-specific), the current behaviour is surely not optimal.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.