

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

	 Uso do mecanismo de excepção como controlo de fluxo, lançar uma excepção demasiado genérica, apanhar uma excepção num bloco catch e lançar uma nova excepção do mesmo tipo ou a mesma excepção 

[ERROR] 022/bci/core/Library.java:52:	AvoidRethrowingException:	Deve evitar o uso de um bloco catch que apenas apanha a excepção para relançar outra excepção do mesmo tipo
[ERROR] 022/bci/core/Parser.java:35:	AvoidRethrowingException:	Deve evitar o uso de um bloco catch que apenas apanha a excepção para relançar outra excepção do mesmo tipo
Total de erros:  2


####    Quebra do encapsulamento


Nada a assinalar


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


Nada a assinalar


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


Nada a assinalar


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

[ERROR] 022/bci/core/LibraryManager.java:52:31: O parâmetro 'Ndays' deve condizer com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [ParameterName]
[ERROR] 022/bci/core/Library.java:145:24: O parâmetro 'Ndays' deve condizer com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [ParameterName]
Total de erros:  2

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

Iniciando a auditoria...
[INFO] 022/bci/core/LibraryManager.java:122 ObjectOutputStream criado no método 'public void saveAs(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 022/bci/core/LibraryManager.java:150 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] 022/bci/core/Parser.java:41 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] 022/bci/core/exception/ImportFileException.java:7 Atributo estático final 'String ERROR_MESSAGE' permitido. [POStaticMember]
[INFO] 022/bci/core/exception/RegisterErrorException.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 '13'. [POStaticMember]
Auditoria completa.

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

Iniciando a auditoria...
[ERROR] 022/bci/core/Date.java:6 O atributo '_currentDate', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:23 O atributo '_nextWorkId', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:24 O atributo '_nextUserId', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:25 O atributo '_modified', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:26 O atributo '_date', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:28 O atributo '_creators', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:29 O atributo '_works', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:30 O atributo '_requests', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
[ERROR] 022/bci/core/Library.java:31 O atributo '_users', com nível de acesso 'package', deveria ser privado e ter métodos acessores. [POVisibilityModifier]
Auditoria completa.
O Checkstyle terminou com 9 erros.

####  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, 2 package-private, 0 protected e 0 public. [WriteClassStructure]
[INFO] Enumerados definidos no package core da aplicação (2): '[Category, UserBehavior]'. [WriteClassStructure]
[INFO] Número total de classes definidos no core: 16, dos quais 0 private, 7 package-private, 0 protected e 9 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 (10): '[User, Request, Creator, Notification, Date, Parser, Dvd, Book, LibraryManager, Library]'. [WriteClassStructure]
[INFO] Excepções definidas no package core da aplicação (5): '[MissingFileAssociationException, RegisterErrorException, UnavailableFileException, ImportFileException, UnrecognizedEntryException]'. [WriteClassStructure]
[INFO] Número total de métodos nas classes do core (sem excepções): 70, dos quais 6 private, 40 package-private, 0 protected e 24 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 35, dos quais 26 private, 9 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 (  )

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

    public String toString()
    public String toString()
    public String toString()

 [WriteClassStructure]
[INFO] enum UserBehavior (  )

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

    public String toString()
    public String toString()
    public String toString()

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

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

    private int _id
    private boolean _isActive
    private String _name
    private String _email
    private int _fine
    private UserBehavior _behavior
    private Collection<Notification> _notifications
    private Collection<Request> _requests

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

    boolean isActive()
    int getId()
    String getName()
    String getEmail()
    int getFine()
    private Collection<Notification> getNotifications()
    Collection<Request> getRequests()
    UserBehavior getBehavior()
    public String toString()

 [WriteClassStructure]
[INFO] class Request (  implements Serializable )

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

    private int _deadline

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

    int getDeadline()

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

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

    private String _name
    private Collection<Work> _works

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

    public boolean equals(Object obj)
    public String toString()
    String name()
    void add(Work work)
    void remove(Work work)
    Collection<Work> works()

 [WriteClassStructure]
[INFO] class Notification (  implements Serializable )

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

    private String _message

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

    public String toString()

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

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

    int _currentDate

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

    int getcurrentDate()
    void advanceDays(int nDays)
    public String toString()

 [WriteClassStructure]
[INFO] class Parser (  )

  ###### 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] class Dvd (  )
  extends Work

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

    private String _igac
    private Creator _director

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

    public String toString()
    String identifier()
    Collection<Creator> getCreator()

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

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

    private String _isbn
    private List<Creator> _authors

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

    public String toString()
    String identifier()
    Collection<Creator> getCreator()

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

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

    private int _id
    private int _price
    private int _numberOfCopies
    private String _title
    private Collection<Request> _requests
    private Category _category

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

    int id()
    int price()
    int numberOfCopies()
    String title()
    Category category()
    int numRequests()
    abstract String identifier()
    abstract Collection<Creator> getCreator()
    public abstract String toString()

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

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

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

    private Library _library
    private String _file
    private boolean _isModified

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

    public Collection<Work> getWorks()
    public Collection<Work> getWorksCreator(String c)
    public Work getWork(int id)
    public Collection<Work> searchWorks(String title)
    public Date getcurrentDate()
    public void advanceDays(int Ndays)
    public Collection<User> getUsers()
    public User getUser(int id)
    public boolean isModified()
    private void setModified(boolean b)
    public int registerUser(String user, String email)
    public void save()
    public void saveAs(String filename)
    public boolean isAssociated()
    public void load(String filename)
    public void importFile(String datafile)

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

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

    int _nextWorkId
    int _nextUserId
    boolean _modified
    Date _date
    Collection<Creator> _creators
    List<Work> _works
    Collection<Request> _requests
    Collection<User> _users

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

    void importFile(String filename)
    Date getcurrentDate()
    Creator getCreator(String name)
    Collection<Work> getWorks()
    Work getWork(int id)
    Collection<Work> searchWorks(String search)
    Collection<Work> getWorksCreator(String c)
    Collection<User> getUsers()
    public User getUser(int id)
    void advanceDays(int Ndays)
    Creator registerCreator(String name)
    User registerUser(String name, String email)
    Dvd registerDvd(int price, int copies, String title, Category c, String igac, Creator director)
    Book registerBook(int price, int copies, String title, Category c, String isbn, List authors)

 [WriteClassStructure]
Auditoria completa.
