

####    Verificação do uso correcto do mecanismo de excepções


Nada a assinalar


####    Quebra do encapsulamento


Nada a assinalar


####    Verificação de alguns aspectos de qualidade do código


[ERROR] 016/bci/core/Book.java:26:9: Utilização de um ciclo 'for' para iterar o conteúdo da lista referenciada por '_authors' (do tipo 'List<Creator>'). Substituir por ciclo for-each ou usar um iterador dado que a utilização do método get pode ser muito ineficiente neste caso. [POIterateListWithForLoop]
Total de erros:  1


####    Verificação da boa aplicação do mecanismo de herança


Nada a assinalar


####    Verificação de Convenções de Codificação

Nada a assinalar

####   Verificação do processo de serialização

Iniciando a auditoria...
[INFO] 016/bci/core/LibraryManager.java:71 ObjectOutputStream criado no método 'public void save()' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 016/bci/core/LibraryManager.java:98 ObjectOutputStream criado no método 'public void saveAs(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 016/bci/core/LibraryManager.java:117 ObjectInputStream criado no método 'public void load(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[ERROR] Número errado de instâncias criadas de 'ObjectOutputStream'. Devia ser 1 e é '2'. [CheckSerialization]
Auditoria completa.
O Checkstyle terminou com 1 erros.

####  Verificação do princípio de desenho aberto/fechado

Iniciando a auditoria...
[WARN] 016/bci/core/Book.java:17 Possível mau desenho: diferenciação do comportamento com base em comparação de enumerados (expressão 'getCategory()' comparada '2' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[WARN] 016/bci/core/Dvd.java:14 Possível mau desenho: diferenciação do comportamento com base em comparação de enumerados (expressão 'getCategory()' comparada '2' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[WARN] 016/bci/core/MyParser.java:31 Possível mau desenho: diferenciação do comportamento com base em comparação de strings (expressão 'components[ ]' comparada '4' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
Auditoria completa.

####  Verificação de dependência app de core


Nada a assinalar


####  Verificação do uso desnecessário de super


Nada a assinalar


####  Verificação de dependência de core de app


Nada a assinalar


####  Verificação do uso de membros estáticos

Iniciando a auditoria...
[INFO] 016/bci/core/exception/ImportFileException.java:7 Atributo estático final 'String ERROR_MESSAGE' permitido. [POStaticMember]
[INFO] O número de serialVersionUID atributos estáticos definidos nas várias classes foi '16'. [POStaticMember]
Auditoria completa.

####  Verificação do nível de acesso dos atributos


Nada a assinalar


####  Verificação da necessidade da concretização de hashCode e equals


Nada a assinalar


####  Verificação de membros com o nível protected desnecessário


Nada a assinalar


####  Verificação do mecanismo de herança II: atributos duplicados e métodos que deviam ser abstractos


Nada a assinalar


####  Sumário das classes do core da aplicação

Iniciando a auditoria...
[INFO] Número total de enumerados definidos no core: 2, dos quais 0 private, 0 package-private, 0 protected e 2 public. [WriteClassStructure]
[INFO] Enumerados definidos no package core da aplicação (2): '[Category, UserBehavior]'. [WriteClassStructure]
[INFO] Número total de classes definidos no core: 13, dos quais 0 private, 1 package-private, 0 protected e 12 public. [WriteClassStructure]
[INFO] Classes abstractas definidas no package core da aplicação (1): '[Work]'. [WriteClassStructure]
[INFO] Classes concretas e não excepções definidas no package core da aplicação (8): '[User, Creator, Date, Dvd, Book, MyParser, LibraryManager, Library]'. [WriteClassStructure]
[INFO] Excepções definidas no package core da aplicação (4): '[MissingFileAssociationException, UnavailableFileException, ImportFileException, UnrecognizedEntryException]'. [WriteClassStructure]
[INFO] Número total de métodos nas classes do core (sem excepções): 51, dos quais 4 private, 23 package-private, 0 protected e 24 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 29, dos quais 29 private, 0 package-private, 0 protected e 0 public. [WriteClassStructure]
Auditoria completa.

Descrição das estruturas de dados do core do projecto

Iniciando a auditoria...
[INFO] enum Category ( public )

 [WriteClassStructure]
[INFO] enum UserBehavior ( public )

 [WriteClassStructure]
[INFO] class User ( public implements Serializable )

  ###### Atributos ###### 

    private final int _id
    private boolean _isActive
    private final String _name
    private final String _email
    private int _fine
    private UserBehavior _behavior

  ###### Métodos ###### 

    boolean isActive()
    public String toString()
    public int getId()

 [WriteClassStructure]
[INFO] class Creator ( public implements Serializable )

  ###### Atributos ###### 

    private final String _name
    private List<Work> _works

  ###### Métodos ###### 

    void addWork(Work work)
    void removeWork(Work work)
    public String getName()
    List<Work> getWorks()

 [WriteClassStructure]
[INFO] class Date ( public implements Serializable )

  ###### Atributos ###### 

    private int _currentDate

  ###### Métodos ###### 

    int getCurrentDate()
    void advanceDay(int nDays)

 [WriteClassStructure]
[INFO] class Dvd ( public )
  extends Work

  ###### Atributos ###### 

    private String _igac
    private final Creator _director

  ###### Métodos ###### 

    public String toString()

 [WriteClassStructure]
[INFO] class Book ( public )
  extends Work

  ###### Atributos ###### 

    private String _isbn
    private final List<Creator> _authors

  ###### Métodos ###### 

    public String toString()

 [WriteClassStructure]
[INFO] class MyParser (  )

  ###### Atributos ###### 

    private Library _library

  ###### Métodos ###### 

    void parseFile(String filename)
    private void parseLine(String line)
    private void parseUser(String components, String line)
    private void parseDvd(String components, String line)
    private void parseBook(String components, String line)

 [WriteClassStructure]
[INFO]  abstract class Work ( public implements Serializable )

  ###### Atributos ###### 

    private final int _id
    private final int _price
    private int _numberOfCopies
    private int _numberOfAvailable
    private final String _title
    private final Category _category

  ###### Métodos ###### 

    public abstract String toString()
    public int getId()
    public int getPrice()
    public int getNumberOfCopies()
    public int getNumberOfAvailable()
    public String getTitle()
    public Category getCategory()

  ###### Subclasses  ###### 
    Dvd   Book   

   Method toString() overriden in subclass(es) Dvd Book 
 [WriteClassStructure]
[INFO] class LibraryManager ( public )

  ###### Atributos ###### 

    private Library _library

  ###### Métodos ###### 

    public int getCurrentDate()
    public void advanceDay(int nDays)
    public int createUser(String userName, String email)
    public User getUser(int userId)
    public List<User> getUsers()
    public Work getWork(int workId)
    public List<Work> getWorks()
    public List<Work> getWorksCreator(String creatorName)
    public void save()
    public void saveAs(String filename)
    public void load(String filename)
    public void importFile(String datafile)

 [WriteClassStructure]
[INFO] class Library ( public implements Serializable )

  ###### Atributos ###### 

    private String _fileName
    private int _nextWorkId
    private int _nextUserId
    private boolean _modified
    private Date _currentDate
    private List<User> _users
    private List<Work> _works
    private List<Creator> _creators

  ###### Métodos ###### 

    String getFileName()
    void setFileName(String fileName)
    boolean getModified()
    void setModified(boolean b)
    Date getCurrentDate()
    void advanceDay(int nDays)
    User createUser(String userName, String email)
    User getUser(int userId)
    List<User> getUsers()
    List<Work> getWorks()
    Work getWork(int workId)
    List<Work> getWorksCreator(String creatorName)
    Creator createCreator(String creatorName)
    Dvd createDvd(int price, int nCopies, String title, Category category, String igac, Creator director)
    Book createBook(int price, int nCopies, String title, Category category, String isbn, List authors)
    void importFile(String filename)

 [WriteClassStructure]
Auditoria completa.
