PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.ruby > finding duplicated lines in folder for refactoring purposes
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
finding duplicated lines in folder for refactoring purposes

Réponse
 
LinkBack Outils de la discussion
Vieux 09/06/2008, 10h53   #1
mcphersonz@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut finding duplicated lines in folder for refactoring purposes

Hello.

I am wondering if anyone knows of a good trick to identify duplicated
lines in a directory for refactoring purposes.

The idea is this: If I can get a listing of all lines, by file in a
directory (recursively) then refactoring code could be focused
eliminating "repeated" lines.

The solution would involve
- recursively searching all files in a given path
- displaying a list of repeated lines (ignoring case and whitespace)
- grouping results by path/filename combination
- sorting results by line repeat count
- ideally only displaying lines that are repeated at lease once...

I'm thinking this should exist either via a application, ruby script,
or shell script.

Does anyone know if any ideas or solutions that are remotely close to
this?

-Shannon

  Réponse avec citation
Vieux 09/06/2008, 12h12   #2
Craig Demyanovich
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: finding duplicated lines in folder for refactoring purposes

Try simian [ http://www.redhillconsulting.com.au/products/simian/ ].

Craig

  Réponse avec citation
Vieux 09/06/2008, 13h30   #3
Robert Klemme
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: finding duplicated lines in folder for refactoring purposes

2008/6/9 mcphersonz@gmail.com <mcphersonz@gmail.com>:
> I am wondering if anyone knows of a good trick to identify duplicated
> lines in a directory for refactoring purposes.


Do you mean "duplicated lines in files in a directory tree"? Ther
term "duplicated lines in a directory" does not make much sense to me
as a directory does not have "lines".

> The idea is this: If I can get a listing of all lines, by file in a
> directory (recursively) then refactoring code could be focused
> eliminating "repeated" lines.
>
> The solution would involve
> - recursively searching all files in a given path
> - displaying a list of repeated lines (ignoring case and whitespace)
> - grouping results by path/filename combination
> - sorting results by line repeat count
> - ideally only displaying lines that are repeated at lease once...
>
> I'm thinking this should exist either via a application, ruby script,
> or shell script.
>
> Does anyone know if any ideas or solutions that are remotely close to
> this?


If you have enough memory or few enough files you could do

# untested
require 'find'
require 'set'

def normalize(line)
l = line.strip
l.gsub!(/\s+/, ' ')
l.downcase!
l
end

duplicates = Hash.new {|h,k| h[k] = Set.new}

Find.find dir do |file|
File.foreach file do |line|
duplicates[ normalize(line) ] << file
end
end

duplicates.each do |line, files|
puts line, files.sort.join(',') if files.size > 1
end

Cheers

robert

--
use.inject do |as, often| as.you_can - without end

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 03h14.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11594 seconds with 11 queries