← Back to team overview

elementary-dev-community team mailing list archive

Re: Review + Asisstentece for Scratch required!

 

Scratch is becoming every push a bigger project which make it a bit more difficult to maintain.

I'll return home Wednesday, please wait me to discuss about it :)

Thanks for your love on the project. 

Mario Guerriero
Sent from iPhone 3GS

On 09/set/2012, at 18:08, Darcy Brás da Silva <dardevelin@xxxxxxxxxxxxxx> wrote:

> I indeed can, sorry for taking long, I had to sleep a bit, couldn't
> think straight after a code marathon :).
> 
> Instead of pasting code in here I will link to the respective lines and
> explain a bit what's wrong with what.
> 
> For instance: 
> 
> from-line:77 to: 88 {Services/Document.vala}
> http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Services/Document.vala#L77
> 
> line 86 
> return _state; 
> 
> various problems:
> 
> 1 - Never Runs due to else statement on line 84 which covers the last
>    possible scenario.
> 2 - This creates the bug https://bugs.launchpad.net/scratch/+bug/1038291
> 
> Where the correction is not very clear. For some reason returning _state
> fixes it but then we get into another problem, which is
> 
> We return _state without a way of knowing that _state was assigned before
> 
> Just in this file we have more hairy stuff, lets see,
> 
> line 67 : public string filename {get; public set; }
> so anyone can change this variable ?
> most functions using this variable use it directly and they check it, 
> if it's not null, they might perform checks in an unassigned situation
> which can become a bug witch hunt.
> 
> some proof of what I just mentioned
> line 111: http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Services/Document.vala#L111
> 
> relies on the previously shown `buggy' line : http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Services/Document.vala#L77
> http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Services/Document.vala#L273
> 
> And is also incoherent, if we just want state, shouldn't we just use the private member, which should be storing the current state of it ?
> why do we keep requesting a full check ?
> 
> line http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Services/Document.vala#L719
> 
> this one is so precious that I'm posting it all:
> the function had no comments, so the ones there are my notes
> 
> public bool can_write () {
> 
>         //check that we never know if the var is set            
>            if (filename != null) {
> 
>                FileInfo info;
>                bool writable;
> 
>                try {
> 
>                    info = file.query_info (FileAttribute.ACCESS_CAN_WRITE, FileQueryInfoFlags.NONE, null);
>                    writable = info.get_attribute_boolean (FileAttribute.ACCESS_CAN_WRITE);
> 
>                    return writable;
> 
>                } catch (Error e) {
> 
>                    warning ("%s", e.message);
>            //redundancy, this is writable variable job
>                    return false;
> 
>                }
> 
>            } else {
>        //heres were we win, so if filename == null, we can_write to the file
>                return true;
> 
>            }
> 
>        }
> 
> line 697: http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Services/Document.vala#L696
> 
> Both error on line 708 and filename set to null the return is 0
> Note: 0 is a valid size, while one want's indicate an error scenario
> so -1 and -2 would be more appropriate. 
> Probably trowing an error would also be a good idea.
> 
> file Scratch.Vala
> this one was introduced by me actually, but is something that can be easily fixed.
> 
> http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Scratch.vala#L135
> 
> I did not handled File exception which now make scratch crash if the decoding of filename files.
> but to be fair, this tactic is wrong since the very start. 
> The open_file function should get a file and this would not be required.
> However i don't know every part of the code that uses this, and some of what 
> I saw do have a legitime reason to send an URI instead of a File (like drag & drop ).
> Since the moment of the patch I explicitly told that it was also inefficient 
> so yeah...
> 
> However that does require to be handled with a try-catch.... 
> We run a bit out of options if we fail the access to a name though.
> 
> line http://bazaar.launchpad.net/~elementary-apps/scratch/scratch/view/head:/src/Widgets/Tab.vala#L145
> 
> get_basename to a presentation element
> remind you valadoc's where it says that it does NOT return a UTF-8 string
> so improper for that.
> 
> I also noted that most file check happen at filename level, which is wrong, one can possibly have
> two files named the same from different paths, and so unique id of the files should be made based 
> on full path and not just filename
> Maybe an hash don't know... needs checking.
> 
> I think this is enough for the sample requested. Isn't it ? 
> I can go find more if required though.
> 
> PS: I have also found Many CGL violations... 
> 
> Hope to hear from all soon.
> cheers 
> 
> On Sun, 2012-09-09 at 16:02 +0400, Sergey "Shnatsel" Davidoff wrote:
>> Could you provide a few examples of the suspicious code/behaviour?
>> 
>> I'm no dev, but as a script kitty I can tell that grep is your best
>> friend when it comes to locating function calls in the code.
>> -- 
>> Sergey "Shnatsel" Davidoff
> 
> -- 
> Darcy Brás da Silva <dardevelin@xxxxxxxxxxxxxx>
> 
> -- 
> Mailing list: https://launchpad.net/~elementary-dev-community
> Post to     : elementary-dev-community@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~elementary-dev-community
> More help   : https://help.launchpad.net/ListHelp


Follow ups

References