1. PHP / Говнокод #4893

    +168

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    function test_file_for_smells( $filename )
       {
       global $MAX_FUNCTION_LINE_COUNT, $MAX_INDENTATION_LEVEL;
       $function_line_count = 0;
       $found_continued_line = 0;
       $line_number = 0;
       $fp = fopen( $filename, "r" );
       if( ! $fp )
         return;
       while( ! feof( $fp ) )
         {
         $line = chop( fgets( $fp, 4096 ) );
         $line_number++;
         while( substr( $line, 0, 9 ) == "function "  &&
                substr( $line, strlen($line) - 1, 1 ) != ')' )
           {
           $line = $line . chop( fgets( $fp, 4096 ) )
           $found_continued_line++;
           }
         if( substr( $line, 0, 9 ) == "function " )
           {
           $function_line_count = 1;
           $function_name = substr( $line, 9, strpos($line, '(') - 9 );
           }
         if( $function_line_count > 0 )
           {
           if( $line == "\t}" )
             {
             $function_line_count = $function_line_count - 3;
             if( $function_line_count > $MAX_FUNCTION_LINE_COUNT )
               print_warning( $filename, $line, $line_number, "$function_name() too long ($function_line_count lines)" );
             $function_line_count = 0;
             }
           else
             $function_line_count++;
           $result = test_line_for_indentation( $line, $MAX_INDENTATION_LEVEL );
           if( ! $result )
             print_warning( $filename, $line, $line_number, "Too much nesting." );
           $result = test_line_for_function_definition( $line, $MAX_NUM_PARAMETERS );
           if( ! $result )
             print_warning( $filename, $line, $line_number, "Too many parameters." );
           if( $found_continued_line > 0 )
             {
             $line_number += $found_continued_line;
             $found_continued_line = 0;
             }
           }
         }
       }

    Детектор говнокода!!!!

    Запостил: fork, 10 Декабря 2010

    Комментарии (10) RSS

    • А компиляторы/интерпретаторы языков программирования, написанные на PHP, бывают?
      Ответить
      • g interpreter written in php
        http://ajaxian.com/archives/j4p5-javascript-interpreter-written-in-php-5
        http://code.google.com/p/lisphp/
        По компиляторам ничего не увидел.
        Ответить
      • у меня будет свой компилятор пхп с блекджеком и статической типизацией
        Ответить
        • А вообще я не понимаю такую быдлость, как compilation php codes in executable file. Ради чего? Ради понтов? О_о
          Ответить
          • 1) гуйные приложения лепить (Delphi for PHP, PHP-GTK)
            2) чтобы работало быстрее (HipHop for PHP)
            Ответить
            • Только делфи не надо: он для разработки веб приложений. А вот PHP Devel Studio 2.0 - да.
              Ответить
      • Похоже, этот вопрос появляется на просторах ГК стабильно с некоторой периодичностью
        Ответить
    • где комментарии школоты мол блять объявление переменных глобальными
      Ответить

    Добавить комментарий