Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • A suggestion: to prevent wear and tear on those poor highlighters, You might want to emit HTML colorized output (use a templating system if you want to let others develop their own output formats, TT2 [] and HTML::Template [] serve opposite ends of the complexity spectrum, not to mention things like HTML::Mason []).

    I also wanted to mention mjd's Algorithm:::Diff [] (which Text::Diff [] uses) in case that would help you find longest common sequences.

    - Barrie

    • Definitely would do so if I either had a color printer or a laptop with a large monitor to take to the code review meeting. My 10" just isn't big enough.

      I suspected someone like mjd would have worked this before...but taking a look at the two modules you reference, I can't immediately see how you'd apply them to a single file.
      • Algorith::Diff could be used to, given a chunk of code that you've already identified as repeated, look for "similar enough" chunks of the file. It calculates longest common subsequences, so that can be used to identify chunks of repeated code, is all (another poster mentioned something which triggered me to think of A::D).

        You could also use it to diff the lines that were tweaked between the original code chunk and the copy-paste-tweaked code chunk. Lots of visual diffs do that sort of char-by-char diffing.

        I mentioned Text::Diff as code that uses Algorithm::Diff and, thinking of it now, you could use it as an output formatter by making a copy of the original file and substituting the original multiline chunk of code in for each place you found an altered copy of it. This would allow you to run it through the doctored file and the original file through Text::Diff in Universal or Table mode to get a side-by-side view. But since you have a limited display, that's probably not useful.

        I've been tempted to make a templatized output formatter for Text::Diff with intraline diffing, but ETIME.

        - Barrie