Projects/Quanta/Feature Plan 4: Difference between revisions

    From KDE TechBase
    No edit summary
    Line 17: Line 17:
    {{FeatureDone|DUChain|add type for PHP resources|[email protected]|Milian Wolff}}  
    {{FeatureDone|DUChain|add type for PHP resources|[email protected]|Milian Wolff}}  
    {{FeatureDone|DUChain|global variables: global keyword, $GLOBALS, $_GET|[email protected]|Niko Sams}}
    {{FeatureDone|DUChain|global variables: global keyword, $GLOBALS, $_GET|[email protected]|Niko Sams}}
    {{FeatureTodo|DUChain|second parse pass when project opened - to find all types correctly|-}}
    {{FeatureDone|DUChain|second parse pass when project opened - to find all types correctly|[email protected]|Niko Sams}}
    {{FeatureInProgress|DUChain|try to improve performance of declaration- and usebuilder, esp. for large files|[email protected]|Milian Wolff}}
    {{FeatureInProgress|DUChain|try to improve performance of declaration- and usebuilder, esp. for large files|[email protected]|Milian Wolff}}
    {{FeatureTodo|DUChain|user configurable project dependencies on other projects/paths|-}}
    {{FeatureTodo|DUChain|user configurable project dependencies on other projects/paths|-}}
    Line 38: Line 38:
    {{FeatureTodo|Code Completion|mind type hinting for function argument completion|-}}
    {{FeatureTodo|Code Completion|mind type hinting for function argument completion|-}}
    {{FeatureDone|Code Completion|skeletons for while/do/for/foreach/switch/class/interface statements|[email protected]|Milian Wolff}}
    {{FeatureDone|Code Completion|skeletons for while/do/for/foreach/switch/class/interface statements|[email protected]|Milian Wolff}}
    {{FeatureTodo|Code Completion|only show arrays/array-like objects in foreach-context|-}}
    {{FeatureTodo|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)|-}}
    {{FeatureTodo|Code Completion|group completion stuff by type, i.e. functions, classes, instances, keywords, etc.|-}}
    {{FeatureTodo|Code Completion|group completion stuff by type, i.e. functions, classes, instances, keywords, etc.|-}}
    {{FeatureTodo|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|-}}
    {{FeatureTodo|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|-}}
    Line 54: Line 54:
    {{FeatureDone|Problem reporting|validate redeclarations, esp. classes, functions, methods etc.|[email protected]|Milian Wolff}}
    {{FeatureDone|Problem reporting|validate redeclarations, esp. classes, functions, methods etc.|[email protected]|Milian Wolff}}
    {{FeatureTodo|Problem reporting|respect "semantic error highlighting" option|-}}
    {{FeatureTodo|Problem reporting|respect "semantic error highlighting" option|-}}
    {{FeatureTodo|Problem reporting|support different severities|[email protected]|Milian Wolff}}
    {{FeatureDone|Problem reporting|support different severities|[email protected]|Milian Wolff}}


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


    {{FeatureTodo|CodeGeneration|new Class with support for extends/implements|-}}
    {{FeatureTodo|CodeGeneration|new Class with support for extends/implements|-}}
    Line 68: Line 68:
    {{FeatureDone|Semantic Highlighting|make colors of member variables
    {{FeatureDone|Semantic Highlighting|make colors of member variables
    and esp. of "$this" consistent|[email protected]|Milian Wolff}}
    and esp. of "$this" consistent|[email protected]|Milian Wolff}}
    {{FeatureTodo|Semantic Highlighting|highlight defines differently|-}}
    {{FeatureTodo|Semantic Highlighting|highlight local variables in global context like local variable in func context|-}}


    {{FeatureTodo|Debugger|Full-Featured Debugger|-}}
    {{FeatureInProgress|Debugger|Full-Featured Debugger (XDebug)|[email protected]|Niko Sams}}


    {{FeatureTodo|Unit Tests|refactor tests to reduce repeated code|-}}
    {{FeatureTodo|Unit Tests|refactor tests to reduce repeated code|-}}
    {{FeatureTodo|Unit Tests|introduce tests for problem reporting|-}}
    {{FeatureTodo|Unit Tests|introduce tests for problem reporting|-}}


    {{FeatureTodo|Documentation|Add support for local and remote (php.net with comments) documentation, integrated into kdevelop. |-}}
    {{FeatureInProgress|Documentation|integrate PHP.net documentation into KDevelop |[email protected]|Milian Wolff}}
    {{FeatureDone|Documentation|remote php.net integrated|[email protected]|Milian Wolff}}
    {{FeatureInProgress|Documentation|integrate local copy of PHP.net documentation|mail@milianw.de|Milian Wolff}}


    {{FeatureTodo|Indenter|write an indenter script based on the C-style indenter which does not work for PHP due to <?php...?> tags|-}}
    {{FeatureDone|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|[email protected]|Milian Wolff}}


    {{FeatureTodo|Assistant|take a look on where to integrate the assistant architecture|-}}
    {{FeatureTodo|Assistant|take a look on where to integrate the assistant architecture|-}}

    Revision as of 01:18, 7 April 2010

    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.