Script to spot some typo based on the file name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Attached is a WIP script I've just written which tries to spot typos in a file, based on the filename itself.

Yesterday, I've posted some finding done with this script.
Today, I share if someone finds it useful, want to improve it or just want to take the idea.

As, I'm not a bash guru, it is neither optimal, nor well written.
But it seems to work as I expect.


The name of a file can be a good source of information to spot typo in the code itself. This can help spot typo in comments or strings, but also wrongly named functions or constant.
3 checks are implemented. They can be disabled individually.

The filename should sometime be tweaked a bit to only take the part before or after a '-' or a '_'. (some regex patterns are in the script for that, just comment/un-comment)

The 2 last checks generate lot of false positives.
It can find some few things, but honestly, the semantic should be improved.


Just in case s.o. find it useful and want to use it to clean-up a few things.

Best regards

CJ


#!/bin/bash

#
# The name of a file can be a good source of information to spot typo in
# the code itself. This can help spot typo in comment or string, but also
# wrongly named functions or constant
#
# This script implements a few 'grep' with variations of the filename
# (inversion of 2 chars, missing char, wrong char)
#

# Enable/disable each test
do_inversion=1;
do_missing=0;
do_wrong=0;


for f in $(find . -name '*.c' -type f); do
    # echo  $f;
    
    pattern=$(basename $f .c)
    #echo  "- " $pattern;
    
    # This can be used to extract sub-string in the filename
    # part=$(echo $pattern | perl -lpe 's/(.*)-.*/$1/')
    # part=$(echo $pattern | perl -lpe 's/.*-(.*)/$1/')
    part=$(echo $pattern)
    # echo  "-->" $part " (" ${#part} ")" ;
    
    ############################
    # Check for char inversion #
    ############################
    for (( n=0; n<${#part}-1; n++ )); do
        x="${part:$n:1}";
        y="${part:$n+1:1}";
        first="${part:1:1}";
        # echo $x " - " $y;
        
        if (($do_inversion==1)) && (( ${#part}>5 )) && [ "$x" != "$y" ] && [ "$first" != "-" ]; then
            perm="";

            for (( i=0; i<n; i++ )); do
                perm="$perm${part:$i:1}";
            done
            perm="$perm${part:$n+1:1}";
            perm="$perm${part:$n:1}";
            for (( i=n+2; i<${#part}; i++ )); do
                perm="$perm${part:$i:1}";
            done

            # echo -e $perm "\n";

            # echo "grep $perm $f";
            if grep -i "$perm" "$f"; then
                echo -e "\n";
                echo "grep -i $perm $f";
                echo  "  Inversion -->" $part " (" ${#part} ")" ;
                echo "############################";
                echo -e "\n";
            fi
        fi
    done

    ##########################
    # Check for missing char #
    ##########################
    for (( n=1; n<${#part}-1; n++ )); do
        
        if (($do_missing==1)) && (( ${#part}>5 )) && [ "${part:n:1}" != "_" ] && [ "${part:n:1}" != "-" ] && [ "${part:n:1}" != "${part:0:1}" ] && [ "${part:n:1}" != "${part:${#part}-1:1}" ]; then
            perm="${part:0:n}";
            perm="$perm${part:n+1:${#part}}";

            # echo -e $perm "\n";

            # echo "grep $perm $f";
            if grep -i "$perm" "$f"; then
                echo -e "\n";
                echo "grep -i $perm $f";
                echo  " Missing -->" $part " (" ${#part} ")" ;
                echo "############################";
                echo -e "\n";
            fi
        fi
    done

    ########################
    # Check for wrong char #
    ########################
    for (( n=1; n<${#part}-1; n++ )); do
        
        if (($do_wrong==1)) && (( ${#part}>5 )); then
            perm="${part:0:n}";
            perm="$perm[^ -_${part:n:1}]";
            perm="$perm${part:n+1:${#part}}";

            # echo -e $perm "\n";

            # echo "grep $perm $f";
            if grep -i "$perm" "$f"; then
                echo -e "\n";
                echo "grep -i $perm $f";
                echo  " Wrong -->" $part " (" ${#part} ")" ;
                echo "############################";
                echo -e "\n";
            fi
        fi
    done

done

[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux