Projects/Quanta/Feature Plan 4

    From KDE TechBase
    The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
    Proposed for moving to community.kde.org
    It has been proposed that this page should be moved to the community.kde.org wiki for the following reason:

    Archive, Internal information.

    This is a todo list for Quanta4

    Php Language Support

    Status Category Description Contact
    DONE Parser Parser written using kdevelop-pg-qt Niko Sams <[email protected]>
    TO DO Parser PHP 5.3 support (configurable) <->
    IN PROGRESS DUChain DUChain generation Niko Sams <[email protected]>
    DONE DUChain class declaration after class instantiation should work as in Php Niko Sams <[email protected]>
    DONE DUChain static variables Niko Sams <[email protected]>
    DONE DUChain final / abstract classes Milian Wolff <[email protected]>
    DONE DUChain final / abstract methods Milian Wolff <[email protected]>
    DONE DUChain adapt isDestructor/isConstructor to handle __destruct / __construct Milian Wolff <[email protected]>
    DONE DUChain add type for PHP resources Milian Wolff <[email protected]>
    DONE DUChain global variables: global keyword, $GLOBALS, $_GET Niko Sams <[email protected]>
    DONE DUChain second parse pass when project opened - to find all types correctly Niko Sams <[email protected]>
    IN PROGRESS DUChain try to improve performance of declaration- and usebuilder, esp. for large files Milian Wolff <[email protected]>
    TO DO DUChain user configurable project dependencies on other projects/paths <->
    TO DO DUChain http://www.icosaedro.it/phplint/phpdoc.html <->
    DONE DUChain properly support magic constants: http://de3.php.net/language.constants.predefined

    if possible show their value while hovering

    Milian Wolff <[email protected]>
    DONE DUChain add variable definitions for key/value in foreach statements Milian Wolff <[email protected]>


    IN PROGRESS Code Completion Niko Sams <[email protected]>
    DONE Code Completion overloadable functions in class context Milian Wolff <[email protected]>
    DONE Code Completion standard PHP keywords for current context (foreach, while, function, etc.) Milian Wolff <[email protected]>
    TO DO Code Completion doxygen/phpdoc comment completion / skeleton generation <->
    TO DO Code Completion completion for default entries of $_SERVER array <->
    DONE Code Completion completion after require/include, similar to what cpp does after #include Milian Wolff <[email protected]>
    DONE Code Completion only show visible methods (protected/private/public) Milian Wolff <[email protected]>
    DONE Code Completion only show interfaces after "implements" Milian Wolff <[email protected]>
    DONE Code Completion only show classes/interfaces after "extends" Milian Wolff <[email protected]>
    DONE Code Completion only show Exceptions in "catch()" and after "throw" Milian Wolff <[email protected]>
    DONE Code Completion filter abstract methods/classes Milian Wolff <[email protected]>
    TO DO Code Completion mind type hinting for function argument completion <->
    DONE Code Completion skeletons for while/do/for/foreach/switch/class/interface statements Milian Wolff <[email protected]>
    TO DO Code Completion filter functions and variables that won't ever be able to return arrays in foreach completion (i.e. no array, no functions that return arrays or objects, no objects) <->
    TO DO Code Completion group completion stuff by type, i.e. functions, classes, instances, keywords, etc. <->
    TO DO Code Completion Create a global Context (imports all files of a project) that is imported in every context. That way findDeclarations(...) works across all files and we can drop that PersistentSymbolTable and CodeModel stuff <->
    TO DO Code Completion create a phpdoc comment for functions / classes, see bug #95904 <->
    TO DO Code Completion use PDTT tests http://wiki.eclipse.org/PDTT_-_PHP_5.3_Code_Assist_Tests <->
    TO DO Code Completion don't do autocompletion in strings, except for callback types <->


    IN PROGRESS Problem reporting Niko Sams <[email protected]>
    DONE Problem reporting don't create problems for not found declarations - instead do it as Cpp does - so it is even configurable Niko Sams <[email protected]>
    TO DO Problem reporting give reasonable error messages <->
    TO DO Problem reporting validate declaration visibility <->
    TO DO Problem reporting configurable: report unreachable code (i.e. after return) <->
    TO DO Problem reporting configurable: variable assignment instead of bool check <->
    TO DO Problem reporting don't build declarations/types/uses/contexts for erroneous declarations <->
    DONE Problem reporting validate redeclarations, esp. classes, functions, methods etc. Milian Wolff <[email protected]>
    TO DO Problem reporting respect "semantic error highlighting" option <->
    DONE Problem reporting support different severities Milian Wolff <[email protected]>


    DONE Internal Php functions extract functions from php manual Niko Sams <[email protected]>
    DONE Internal Php functions add superglobal variables ($_GET, ...) Niko Sams <[email protected]>
    TO DO Internal Php functions configurable: ignore deprecated autoglobals like $argv, $HTTP_*_VARS <->
    DONE Internal Php functions add @since for functions only avaliable in Php 5.3 Milian Wolff <[email protected]>


    TO DO CodeGeneration new Class with support for extends/implements <->
    TO DO CodeGeneration file template with proper phpdoc/doxygen comment <->
    TO DO CodeGeneration Assistant popup for creating missing include files <->


    IN PROGRESS Semantic Highlighting <->
    DONE Semantic Highlighting make colors of member variables

    and esp. of "$this" consistent

    Milian Wolff <[email protected]>
    TO DO Semantic Highlighting highlight defines differently <->
    TO DO Semantic Highlighting highlight local variables in global context like local variable in func context <->


    IN PROGRESS Debugger Full-Featured Debugger (XDebug) Niko Sams <[email protected]>


    TO DO Unit Tests refactor tests to reduce repeated code <->
    TO DO Unit Tests introduce tests for problem reporting <->


    IN PROGRESS Documentation integrate PHP.net documentation into KDevelop Milian Wolff <[email protected]>
    DONE Documentation remote php.net integrated Milian Wolff <[email protected]>
    IN PROGRESS Documentation integrate local copy of PHP.net documentation Milian Wolff <[email protected]>


    DONE Indenter write an indenter script based on the C-style indenter which does not work for PHP due to <?php...?> tags

    Note: cstyle.js works fine for PHP

    Milian Wolff <[email protected]>


    TO DO Assistant take a look on where to integrate the assistant architecture <->


    TO DO Formatter Add a formatter plugin for the PHP beautifier <->

    Fix PHP-related Quanta bugs (list of bugs containing "PHP" keyword in products: kate, kdevelop, kdevplatform, quanta)

    Kate PHP Highlighting

    There are some bugs in the general PHP highlighting for Kate and other KTextEditor components. Note: Make sure to fix it in all files which use PHP.

    Status Category Description Contact
    DONE keywords fix <?PHP ,i.e. capital PHP Milian Wolff <[email protected]>
    DONE constants add missing magic constants, see http://de3.php.net/language.constants.predefined Milian Wolff <[email protected]>

    Cleanup

    Various stuff we should investigate and probably cleanup one day. Listed here so I don't forget them:

    • make sure all iterators are const where possible
    • be krazy

    Known Limitations

    return-type in recursive functions

    In the following snippet, the variable $foo will have the wrong type mixed, instead of stdClass:

    function bar() {
      $bar = bar();
      return new stdClass;
    }
    

    You can workaround that, by adding a @param stdClass to the doccomment of the function.