README - ConcernTagger ============================================================================================ PARTE 1 - 10/03/2008 ============================================================================================ 1) Primeiro, certifique-se que o projeto que você vai utilizar NÃO possui erros de compilação. Se houver, alguns pacotes/classes podem não ser mapeados. 2) Assim que você abre um projeto no Eclipse (exemplo, o HealthWatcher) e quer usar o ConcernTagger nele (por exemplo, quando você clica com o botão direito em cima de algum atributo / método), você será perguntado se quer que ele crie o modelo daquele projeto - o modelo é, basicamente, um repositório que ele cria para mapear os artefatos do projeto: as classes, os atributos etc. 3) Assim, com o projeto compilado corretamente e o modelo criado, os concerns podem ser mapeados. ======> IMPORTANTE (LEIAM ISSO!) <====== Notem que o modelo já foi criado pela ferramenta. Assim sendo, **VOCÊ NÃO DEVE ALTERAR O PROJETO**. Por exemplo, se você criar um novo método/atributo e tenta mapeá-los em um determinado concern, isso NÃO IRÁ FUNCIONAR!!! Não funciona pois o modelo JÁ FOI CRIADO. Assim, ele não pode mapear novos atributos e métodos de uma classe, por exemplo. Essa explicação está no README do projeto como uma Known Issue: "We do not support making changes to the Java project after it has been imported. If the name or signature of an element changes, the link will still be present but the icon will show a question mark indicating that the link is invalid". Foi exatamente isso que aconteceu quando eu criei o método imprimirTeste e o atributo teste. Eu os criei DEPOIS de ter criado o modelo. Por isso que ele não conseguiu mapear esses novos artefatos. Bom trabalho a todos! Márcio. ============================================================================================ PARTE 2 - 14/03/2008 ============================================================================================ Considerem o seguinte código e um concern "Test" criado usando o ConcernTagger: public class Test { public String test = "Test"; public void printTest() { System.out.println(test); } } public class Main { public static void main(String[] args) { Test t = new Test(); t.printTest(); } } 1) Podemos marcar Test.test e fazer um assign com o concern Test. 2) Podemos marcar Test.printTest e fazer um assign com o concern Test. Até aí, CDC = 1, pois o concern Test só está difuso em um componente: a classe Test. 3) Ao abrir a classe Main, podemos verificar que há uma chamada para printTest. Assim, podemos marcar essa chamada e associá-la ao concern Test. Mas isso parece não funcionar... Mandamos um e-mail para os criadores da métrica CDC e eles responderam que é bem provável que o ConcernTagger só consegue mapear classes, métodos e atributos... Mandamos um outro e-mail para o criador da ferramenta e este nos recomendou associar o Main.main ao concern Test (observem que Main.main pode conter diversos outros concerns além de Test). Após isso, teríamos CDC = 2 (2 componentes, Main e Test) Segundo o autor da ferramenta, a nova versão do ConcernTagger irá inferir automaticamente a chamada ao método printTest. Vamos esperar... Abraços, Márcio.