【C言語】
strstr関数を使ってコードの不吉な臭いを見つける

駄目語(grep -f NGワード相当)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//ソースコードの受け入れ試験で
//問題のありそうなコードを
//手っ取り早く見つける
//使い方:
//  $./a.out  ../*/*.c ../*/*/*.c |sort -n

static char *駄目語録[]={
    "Todo",     //お前が今修正しろ
    "roop",     //誤字⇒一度もレビューを受けていない
    "開放",     //誤字⇒解放  
    "loop_counter", //局所変数に長い名前    
    "かも",     //断定してください
    "さん",     //個人名
    "様から",   //個人名
    "多分",     //断定してください
    "予定",     //予定は未定  
    "処理を抜ける", //break
    "処理なし",  //なら書くな
    "何もしない",//なら書くな
    ")NULL",    //(キャスト)NULL
    ")\"",      //キャスト"文字列
    &__DATE__[7],   //今年作ったばかり   
    "else",     //No-else-return 
    NULL
};
static int 行処理(char *line){
    int 駄目 = 0 ;
    for(int i = 0; 駄目語録[i] != NULL;i++){
        if(strstr(line,駄目語録[i])){
            駄目++ ;
        }
    }
    return  駄目 ;    
}
static int ファイル処理(char *filename){
    FILE *fp = fopen(filename,"re");
    if(fp == NULL){
        perror(NULL);
        exit(1);
    }
    int 評価点 = 0;
    char    buf[BUFSIZ];
    while(fgets(buf,BUFSIZ,fp) != NULL){
        評価点 += 行処理(buf);
    }
    fclose(fp);
    return  評価点 ;
}
int main(int argc,char *argv[]){
    if(argc < 2){
        printf("Usage:./a.out f1.c f2.c ....\n");
        exit(1);
    }
    for(int i = 1;i < argc;i++){
        int 評価点 = ファイル処理(argv[i]);
        if(評価点){
            printf("%d点 : %s\n",評価点,argv[i]);
        }
    }
}

駄目語録[]の単語は開発環境で異なります。
ご自身の環境に応じて追加削除してください。