

####    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] 055/bci/core/Dvd.java:45:9: Utilização de um ciclo 'for' para iterar o conteúdo da lista referenciada por '_director' (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]
[ERROR] 055/bci/core/Book.java:45:9: Utilização de um ciclo 'for' para iterar o conteúdo da lista referenciada por '_author' (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:  2


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


Nada a assinalar


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

[ERROR] 055/bci/core/Library.java:23:25: Abreviações no nome '_nextUserID' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
[ERROR] 055/bci/core/Library.java:24:25: Abreviações no nome '_nextWorkID' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
[ERROR] 055/bci/core/Request.java:3:17: O atributo com o nome 'returndate'não está de acordo com o padrão '^_[a-z][a-zA-Z]*[0-9]?$'. [POAttributeName]
Total de erros:  3

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

Iniciando a auditoria...
[INFO] 055/bci/core/LibraryManager.java:48 ObjectOutputStream criado no método 'public void saveAs(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 055/bci/core/LibraryManager.java:63 ObjectInputStream criado no método 'public void load(String filename)' da classe 'LibraryManager'. [CheckSerialization]
Auditoria completa.

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

Iniciando a auditoria...
[WARN] 055/bci/core/MyParser.java:24 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]
[WARN] 055/bci/core/User.java:95 Possível mau desenho: diferenciação do comportamento com base em comparação de strings (expressão '_status' comparada '2' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[WARN] 055/bci/core/Work.java:21 Possível mau desenho: diferenciação do comportamento com base em comparação de enumerados (expressão '_category' comparada '3' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[INFO] 055/bci/core/Work.java:22 Comparação de valores enumerados via método equals. Normalmente, a comparação de valores enumerados pode ser realizada via operador ==. [OpenClosePrinciple]
[INFO] 055/bci/core/Work.java:25 Comparação de valores enumerados via método equals. Normalmente, a comparação de valores enumerados pode ser realizada via operador ==. [OpenClosePrinciple]
[INFO] 055/bci/core/Work.java:28 Comparação de valores enumerados via método equals. Normalmente, a comparação de valores enumerados pode ser realizada via operador ==. [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

Iniciando a auditoria...
[ERROR] 055/bci/core/Library.java:168 Classe 'bci.app.exception.NoSuchWorkException', definida na camada de aplicação, não pode ser indicada na lista de excepções de um método de uma entidade do domínio. [POCoreImport]
[ERROR] 055/bci/core/Library.java:174 instanciação do tipo 'bci.app.exception.NoSuchWorkException' não permitido em classes da camada de domínio. [POCoreImport]
[ERROR] 055/bci/core/Library.java:195 Classe 'bci.app.exception.NoSuchCreatorException', definida na camada de aplicação, não pode ser indicada na lista de excepções de um método de uma entidade do domínio. [POCoreImport]
[ERROR] 055/bci/core/Library.java:201 instanciação do tipo 'bci.app.exception.NoSuchCreatorException' não permitido em classes da camada de domínio. [POCoreImport]
Auditoria completa.
O Checkstyle terminou com 4 erros.

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

Iniciando a auditoria...
[INFO] 055/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 '12'. [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

Iniciando a auditoria...
[ERROR] O atributo '_type' está duplicado em todas as subclasses de 'Work'. [WriteClassStructure]
Auditoria completa.
O Checkstyle terminou com 1 erros.

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

Iniciando a auditoria...
[INFO] Número total de enumerados definidos no core: 3, dos quais 0 private, 0 package-private, 0 protected e 3 public. [WriteClassStructure]
[INFO] Enumerados definidos no package core da aplicação (3): '[Classification, UserStatus, Category]'. [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, Request, Creator, 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): 52, dos quais 4 private, 2 package-private, 0 protected e 46 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 35, dos quais 35 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 Classification ( public )

 [WriteClassStructure]
[INFO] enum UserStatus ( public )

 [WriteClassStructure]
[INFO] enum Category ( public )

 [WriteClassStructure]
[INFO] class User ( public implements java.io.Serializable )

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

    private int _id
    private String _username
    private String _email
    private String _status
    private String _class
    private int _fine

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

    public void payFine()
    public void updateStatus(String status)
    public void updateClass(String classif)
    public int getId()
    public String getUsername()
    public String getEmail()
    public String getStatus()
    public String getClassif()
    public String toString()

 [WriteClassStructure]
[INFO] class Request ( public implements java.io.Serializable )

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

    private int _id
    private int returndate
    private boolean _returned

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

    public boolean getReturned()

 [WriteClassStructure]
[INFO] class Creator ( public implements java.io.Serializable )

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

    private String _name
    private List<Work> _works

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

    public String getName()
    public String toString()
    public List<Work> getWorks(Library library)

 [WriteClassStructure]
[INFO] class Dvd ( public implements java.io.Serializable )
  extends Work

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

    private List<Creator> _director
    private String _igac
    private String _type

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

    public List<Creator> getDirector()
    public String getIgac()
    public String toString()

 [WriteClassStructure]
[INFO] class Book ( public implements java.io.Serializable )
  extends Work

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

    private List<Creator> _author
    private String _isbn
    private String _type

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

    public List<Creator> getAuthor()
    public String getIsbn()
    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 parseBook(String components, String line)
    private void parseDvd(String components, String line)

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

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

    private final String _title
    private final int _id
    private int _available
    private int _totalNum
    private final int _price
    private final Work.Category _category
    private List<Creator> _authors
    private String _categorystr

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

    public String categoryToString()
    public String getTitle()
    public int getId()
    public int getAvailable()
    public int getPrice()
    public Work.Category getCategory()
    public int getTotalNum()
    public void updateAvailableCopies(int num)
    public List<Creator> getAuthors()
    public abstract String toString()

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

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

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

    private Library _library
    private String _filename

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

    public void save()
    public void saveAs(String filename)
    public void load(String filename)
    public void importFile(String datafile)
    public Library getLibrary()

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

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

    private List<User> _users
    private List<Book> _books
    private List<Creator> _creators
    private List<Dvd> _dvds
    private int _nextUserID
    private int _nextWorkID
    private int _date

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

    public int getDate()
    public int advanceDate(int days)
    public int getUserId()
    public User registerUser(String name, String email)
    public Creator registerCreator(String name)
    public Book registerBook(String title, int price, . category, List authors, String isbn, int available, int totalNum)
    public Dvd registerDvd(String title, Creator director, int price, . category, String igac, int copies)
    public List<Work> getAllWorks()
    public Work getWork(int num)
    public List<User> getAllUsers()
    public Creator getCreatorByName(String name)
    public List<Work> getWorksByCreator(Creator creator)
    void importFile(String filename)

 [WriteClassStructure]
Auditoria completa.
