

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




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

[INFO] 046/bci/core/LibraryManager.java:142:	IdenticalCatchBranches:	Ramo 'catch' idênticol to ramo 'FileNotFoundException' pertencentes à mesma instrução try.
Total de erros:  0


####    Quebra do encapsulamento


Nada a assinalar


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


[WARN] 046/bci/core/Library.java:107:	ExcessiveMethodLength:	Evitar métodos com um corpo grande.
Total de erros:  0


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


Nada a assinalar


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

[ERROR] 046/bci/core/DVD.java:6:20: Abreviações no nome 'DVD' não deveriam conter mais do que '1' letras maiúsculas consecutivas. [AbbreviationAsWordInName]
[ERROR] 046/bci/core/LibraryManager.java:65:18: O método com o nome 'CreatorExists' não está de acordo com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [MethodName]
[ERROR] 046/bci/core/Library.java:268:18: O método com o nome 'CreatorExists' não está de acordo com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [MethodName]
[ERROR] 046/bci/core/User.java:11:17: O atributo com o nome 'fine'não está de acordo com o padrão '^_[a-z][a-zA-Z]*[0-9]?$'. [POAttributeName]
[ERROR] 046/bci/core/User.java:14:20: O atributo com o nome 'behavior'não está de acordo com o padrão '^_[a-z][a-zA-Z]*[0-9]?$'. [POAttributeName]
[ERROR] 046/bci/core/Work.java:47:19: O método com o nome 'CategoryToString' não está de acordo com o padrão '^[a-z][a-zA-Z]*[0-9]?$'. [MethodName]
Total de erros:  6

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

Iniciando a auditoria...
[INFO] 046/bci/core/LibraryManager.java:89 ObjectOutputStream criado no método 'public void save()' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 046/bci/core/LibraryManager.java:110 ObjectOutputStream criado no método 'public void saveAs(String filename)' da classe 'LibraryManager'. [CheckSerialization]
[INFO] 046/bci/core/LibraryManager.java:132 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] 046/bci/core/Library.java:88 Possível mau desenho: diferenciação do comportamento com base em comparação de strings (expressão 'categoryString.toUpperCase()' comparada '4' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[WARN] 046/bci/core/Library.java:107 Possível mau desenho: diferenciação do comportamento com base em comparação de strings (expressão 'tag' comparada '4' vezes) e não com base no polimorfismo. [OpenClosePrinciple]
[ERROR] 046/bci/core/LibraryManager.java:135 Evite a utilização do operador instanceof dado que normalmente o seu uso indica uma má aplicação do paradigma de programação com objectos. [OpenClosePrinciple]
[WARN] 046/bci/core/Work.java:47 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]
Auditoria completa.
O Checkstyle terminou com 1 erros.

####  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] 046/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 '17'. [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

Iniciando a auditoria...
[WARN] Possível erro: A classe 'Work' utilizada no atributo 'private Set<Work> _works' da classe 'Creator' não substitui os métodos hashCode e equals. [WriteClassStructure]
Auditoria completa.

####  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: 1, dos quais 0 private, 0 package-private, 0 protected e 1 public. [WriteClassStructure]
[INFO] Enumerados definidos no package core da aplicação (1): '[Category]'. [WriteClassStructure]
[INFO] Número total de classes definidos no core: 11, dos quais 0 private, 0 package-private, 0 protected e 11 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 (6): '[DVD, User, Book, LibraryManager, Library, Creator]'. [WriteClassStructure]
[INFO] Excepções definidas no package core da aplicação (4): '[ImportFileException, MissingFileAssociationException, UnrecognizedEntryException, UnavailableFileException]'. [WriteClassStructure]
[INFO] Número total de métodos nas classes do core (sem excepções): 50, dos quais 4 private, 0 package-private, 0 protected e 46 public. [WriteClassStructure]
[INFO] Número total de atributos nas classes do core (sem excepções): 29, dos quais 23 private, 0 package-private, 6 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] class DVD ( public, final )
  extends Work

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

    private Creator _director
    private final String _igac

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

    public Creator getDirector()
    public String getIGAC()
    public String toString()

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

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

    private final String _name
    private final String _email
    private final int _id
    private boolean _isActive
    private int fine
    private String behavior

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

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

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

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

    private List<Creator> _authors
    private String _isbn

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

    public List<Creator> getAuthors()
    public String getISBN()
    public String toString()

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

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

    protected String _title
    protected boolean _isAvailable
    protected int _price
    protected int _numberOfCopies
    protected Category _category
    protected int _id

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

    public String getTitle()
    public boolean isAvailable()
    public int getPrice()
    public int getNumberOfCopies()
    public Category getCategory()
    public int getId()
    public String CategoryToString()

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

 [WriteClassStructure]
[INFO] class LibraryManager ( public )

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

    private Library _library
    private String _filename

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

    public int getCurrentDate()
    public void advanceDate(int days)
    public int registerUser(String name, String email)
    public User getUser(int id)
    public List<User> getUsers()
    public Work getWork(int id)
    public Iterable<Work> getWorks()
    public boolean CreatorExists(String name)
    public List<Work> getWorksByCreator(String name)
    public void save()
    public void saveAs(String filename)
    public String getFilename()
    public void load(String filename)
    public void importFile(String datafile)

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

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

    private List<User> _users
    private List<Book> _books
    private List<DVD> _dvds
    private final List<Work> _works
    private final Map<String, Creator> _creators
    private int _nextUserId
    private int _nextWorkId
    private String _filename
    private int _currentDate

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

    public int getCurrentDate()
    public void advanceDate(int days)
    private Creator getOrCreateCreator(String name)
    private Category stringToCategory(String categoryString)
    public void importFile(String datafile)
    public int registerUser(String name, String email)
    public User getUser(int id)
    public Iterable<Work> getWorks()
    public List<User> getUsers()
    private void addBook(String title, List authors, int price, String categoryText, String isbn, int copies)
    private void addDvd(String title, String director, int price, String categoryText, String igac, int copies)
    public Work getWork(int id)
    public boolean CreatorExists(String name)
    public List<Work> getWorksByCreator(String name)

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

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

    private final String _name
    private Set<Work> _works

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

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

 [WriteClassStructure]
Auditoria completa.
