

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




	 Blocos catch's iguais ou vazios (incluindo neste casos blocos try e finaly vazios)

[ERROR] 001/bci/app/main/DoSaveFile.java:32:	EmptyCatchBlock:	Evitar blocos catch vazios.
[ERROR] 001/bci/app/main/DoSaveFile.java:35:	EmptyCatchBlock:	Evitar blocos catch vazios.
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] 001/bci/core/DVD.java:3:14: Abreviações no nome 'DVD' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
[ERROR] 001/bci/core/Library.java:199:9: Abreviações no nome 'newDVD' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
Total de erros:  2

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

Iniciando a auditoria...
[INFO] 001/bci/core/LibraryManager.java:96 ObjectOutputStream criado no método 'public void save()' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 001/bci/core/LibraryManager.java:132 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] 001/bci/core/MyParser.java:30 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] 001/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 '20'. [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, Behavior]'. [WriteClassStructure]
[INFO] Número total de classes definidos no core: 17, dos quais 0 private, 1 package-private, 0 protected e 16 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 (8): '[WorkIdNotFoundException, MissingFileAssociationException, UserIdNotFoundException, UnavailableFileException, ImportFileException, UnrecognizedEntryException, CreatorIdNotFoundException, InvalidUserParametersException]'. [WriteClassStructure]
[INFO] Número total de métodos nas classes do core (sem excepções): 80, dos quais 4 private, 55 package-private, 0 protected e 21 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 31, dos quais 31 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 )

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

    private final String _categoria

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

    public String getCategoriaString()

 [WriteClassStructure]
[INFO] enum Behavior ( public )

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

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

    private final int _idUser
    private final String _name
    private final String _email
    private boolean _active
    private int _deadlinesMet
    private int _debt
    private List<Work> _works
    private Behavior _behavior

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

    Behavior getBehavior()
    void setBehavior(Behavior behavior)
    public String toString()
    boolean getStatus()
    void suspendUser()
    void activateUser()
    String getName()
    int getUserId()
    String getEmail()
    int getDeadlinesMet()
    void increaseDeadlinesMet()
    void resetDeadlinesMet()
    int getDebt()
    void setDebt(int debt)
    List<Work> getWorks()

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

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

    private final String _name
    private List<Work> _works

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

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

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

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

    private int _day

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

    int getCurrentDate()
    void advanceDate(int day)

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

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

    private final String _igac
    private final Creator _creator

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

    Creator getCreator()
    String getIgac()
    String getWorkType()
    public String toString()

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

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

    private final String _isbn
    private final List<Creator> _creators

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

    List<Creator> getCreators()
    String getIsbn()
    String getWorkType()
    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 _idWork
    private int _numCopies
    private int _numCopiesAvailable
    private final String _title
    private final int _price
    private Category _category

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

    int getNumCopies()
    int getNumCopiesAvailable()
    void setNumCopiesAvailable(int newNumCopiesAvailable)
    int getPrice()
    String getTitle()
    int getWorkId()
    Category getCategory()
    String getCommonFormat()
    abstract String getWorkType()
    public abstract String toString()

  ###### Subclasses  ###### 
    DVD   Book   

   Method getWorkType() 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 _filename

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

    public boolean isModified()
    public int getCurrentDateInt()
    public void advanceDays(int nDays)
    public int registerUser(String userName, String email)
    public User getUser(int idUser)
    public String getUserString(int idUser)
    public List<User> getUsers()
    public String getUsersString()
    public Work getWork(int idWork)
    public String getWorkString(int idWork)
    public List<Work> getWorks()
    public String getWorksString()
    public String getCreatorsWorks(String name)
    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 List<User> _users
    private List<Work> _works
    private int _nextWorkId
    private int _nextUserId
    private boolean _modified
    private Date _date
    private List<Creator> _creators

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

    boolean isModified()
    void setModified(Boolean bool)
    Date getCurrentDate()
    int getCurrentDateInt()
    void advanceDays(int nDays)
    User registerUser(String userName, String email)
    User getUser(int idUser)
    String getUserString(int idUser)
    List<User> getUsers()
    String getUsersString()
    Book registerBook(int numCopies, String title, int price, Category category, List creators, String isbn)
    DVD registerDVD(int numCopies, String title, int price, Category category, Creator creator, String igac)
    Work getWork(int idWork)
    String getWorkString(int idWork)
    List<Work> getWorks()
    String getWorksString()
    Creator registerCreator(String name)
    String getCreatorsWorks(String name)
    void importFile(String filename)

 [WriteClassStructure]
Auditoria completa.
