elementary-dev-community team mailing list archive
-
elementary-dev-community team
-
Mailing list archive
-
Message #01088
Re: Review + Asisstentece for Scratch required!
No problem, I'm looking forward to work with you :)
I can wait a couple days. While doing so I'll try prepare some possible
solutions :)
On Sun, 2012-09-09 at 18:23 +0100, Mario Guerriero wrote:
> 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
--
Darcy Brás da Silva <dardevelin@xxxxxxxxxxxxxx>
Attachment:
signature.asc
Description: This is a digitally signed message part
Follow ups
References