logoalt Hacker News

shagieyesterday at 7:06 PM4 repliesview on HN

In some code that I was working on, I had

    // stuff
    obj.setSomeData(something);
    // fifteen lines of other code
    obj.setSomeData(something);
    // more stuff
The 'something' was a little bit more complex, but it was the same something with slightly different formatting.

My linter didn't catch the repeat call. When asking the AI chat for a review of the code changes it did correctly flag that there was a repeat call.

It also caught a repeat call in

    List<Objs> objs = someList.stream().filter(o -> o.field.isPresent()).toList();
    
    // ...

    var something = someFunc(objs);

    Thingy someFunc(List<Objs> param) {
        return param.stream().filter(o -> o.field.isPresent()). ...
Where one of the filter calls is unnecessary... and it caught that across a call boundary.

So, I'd say that AI code reviews are better than a linter. There's still things that it fusses about because it doesn't know the full context of the application and the tables that make certain guarantees about the data, or code conventions for the team (in particular the use of internal terms within naming conventions).


Replies

realusernameyesterday at 7:40 PM

I had a similar review by AI except my equivalent of setSomeData was stateful and needed to be there in both places, the AI just didn't understand any of it.

show 2 replies
uoaeiyesterday at 7:36 PM

I'd say I see one anecdote, nothing to draw conclusions from.

fcarraldoyesterday at 9:02 PM

Why isn’t `obj` immutable?

show 1 reply
tayo42yesterday at 8:32 PM

Unit tests catch that kind of stuff

show 2 replies