Skip to content

v2.0.x Chore - add custom ast-grep rules #207

Closed
@reactive-firewall

Description

@reactive-firewall

project specific ast-grep rules

the powerful tool ast-grep could be better leveraged for the project, with targeted custom rules

Context and background information

Regarding a recent review of 'docs/FAQ.md' @coderabbitai observed

API examples are correct but could be improved

The Python API examples in the FAQ are accurate and match the implementation, as they use the correct class (McastDispatch) and method (doStep) with proper argument structure. However, the examples could be enhanced by:

  • Adding error handling with try-except blocks (already present)
  • Including comments about default values (port=59259, group='224.0.0.1')
  • Mentioning that the message argument is required
  • Documenting that the function returns a tuple of (success_bool, result)

The following scripts were executed for the analysis:

Script:

#! /bin/bash
# Description: Verify Python API examples match the implementation

# Test: Check if the API classes and methods exist
ast-grep --pattern $'class McastRECV {
  $$$
  doStep($$$) {
    $$$
  }
}'

ast-grep --pattern $'class McastHEAR {
  $$$
  doStep($$$) {
    $$$
  }
}'

Length of output: 153


Script:

#!/bin/bash
# Let's check for the actual McastDispatch class and its methods
ast-grep --pattern $'class McastDispatch {
  $$$
  doStep($$$) {
    $$$
  }
}'

# Search for any Python files that might contain the implementation
fd -e py --exec cat {}

# Look for specific imports and usage patterns
rg "class Mcast" -A 5

Length of output: 270032


Script:

#!/bin/bash
# Let's check for McastDispatch.doStep implementation
ast-grep --pattern $'class McastDispatch {
  $$$
  doStep($$$) {
    $$$
  }
}'

# Let's verify the example's SAY arguments match the implementation
rg "McastDispatch\(\)\.doStep\(\[\"SAY\"," -A 2

Length of output: 838


Script:

#!/bin/bash
# Let's check the actual implementation of McastSAY class
ast-grep --pattern $'class McastSAY {
  $$$
  doStep($$$) {
    $$$
  }
}'

# Let's also check for any port/group validation in the code
rg "port.*=.*kwargs\.get.*" -A 2
rg "group.*=.*kwargs\.get.*" -A 2

Length of output: 936


Originally posted by @coderabbitai[bot] in #184 (review)

Metadata

Metadata

Labels

ChoreMiscellaneous chores to maintain the projectLinterAny linter tool or setting file enhancementsMulticastAny main project file changesTestingSomething can be verifiedenhancementNew feature or requestquestionFurther information is requested

Type

No type

Projects

Status

Archive Backlog

Relationships

None yet

Development

No branches or pull requests

Issue actions