SqlCodeGuard.2.9 Developer Build
July 26, 2015

[*] fixed unparsed with CONTAINS condition

[*] fixed xtra "ST010 Use alias for all table sources" for UPDATE/DELETE statements with single FROM clause item

[*] fixed xtra MI003 "Unqualified column name" on DATENAME(MONTH, GETDATE())

[*] added --# scgignore(all) support

[*] fixed unparsed on EXECUTE AS USER = @login_name

[*] added "ref bool process" parameter for OnModuleProcessing delegate to make possibe to skip analyse for certain objects

May 4, 2015

[*] fixed extra MI005 when variable used as EXEC @spname

[*] fixed unparsed on FOR XML ROOT without parameters

[*] fixed error while loading non-clustered indexes from SQL2014

[*] fixed error when @VAR in SET CONTEXT was not resolved as variable

[*] Regression: switched back to .Net framework 3.0 to support integration with SQL2008R2

[*] added additional exception logging and handling

Feb 18, 2015

[*] moved to .Net Framework 4.0

[+] added command line utility

[+] added draft support for preprocessor command scgignore - to ignore specifis issues in file

[+] added scgallow(issue)/scgignore(issue`)to control which issues should be registered

[*] added support for VS2013

[+] added support for sqlcmd comman syntax :<COMMAND>

[+] added [SC004] Found todo item. You can use "--# todo <text>", "--# bug <text>", "--# fix <text>" or "--# warning <text>" marks in your scripts.

[+] added [MI007] WAIT FOR DELAY/TIME used"

[+] added readme.txt for TfsCheckinPolicy

[*] fixed issues when hierarchyid methods were processed like usual functions/fields

[*] fixed unparsed with BEGIN TRY/BEGIN CATCH

[*] msbuild: SourcePath now can point to a file, not only a folder

[*] msbuild: files now sorted before processing

[*] minor changes in error reporting

[*] API slightly refactored

[*] CASE WHEN NULL THEN ... END now triggers [BP011] NULL comparison or addition/substring

[*] fixed xtra [MI006] "Parameter is declared but never used" on OUT parameters

Aug 13, 2014

[+] sql2014 added to supported sql versions

[*] linked with SIPF

[*] added replacements for deprecated system objects

[*] [CGUNP] can be now excluded from issues in msbuild

[+] added TreatWarningsAsErrors option for msbuild

[+] added TreatIssueAsError property for msbuild

[+] added TreatIssueAsWarning propert for msbuild

[+] added [ST013] Non-ANSI NOT_EQUAL operator used (!=)

[*] added bunch of try/catch with log

[+] added exclusion list for [MI001] Table variable is declared but never used

[+] added exclusion list for [MI002] Temporary table is declared but never used

[+] added support message if not all issues copied

[*] added wait cursor for GUI

[*] reset focused item in LV to top after reprocessing

[*] changed order of line/column attributes in produced xml

[*] changed MI005 "Variable declared but never used" and MI006 "Parameter is declared but never used" : now assignments does not counts as usage; variable should be used in expression or as stored procedure parameters

[*] fixed error when SSMS crashes when processing SQL2014 database

[*] fixed issues when only script-based issues were copied

[*] fixed issues when GO was parsed as identifier/alias instead of batch separator

[*] fixed several issues with copying issues to clipboard/new window

[*] (partially) fixed unparsed on CREATE INDEX WITH DATA_COMPRESSION

[*] fixed issues when not all issues were copied to new window/file

[*] fixed unparsed GRANT EXECUTE ON [dbo].[someSP] TO [someuser] AS [dbo]

[*] [MI002] Temp table is declared but never used: insert into temporary table does not counts as usage, only reference in select/update/delete/truncate statement

[*] [MI001] "Table var is declared but never used": now insert into tablevar does not counts as usage;tablevar should be referenced in select/update/delete statement

May 24, 2014

[+] added digital sign

[*] added metadata info for ecosystem registration

[+] added new menu "Settings"

[+] added ability to change settings like BP017AllowedTables and so on

[*] linked with SIPF 1.0.2

[*] fixed xtra MI003 on system functions like CURRENT_USER

[*] fixed issue when info label not hidden after complexity analyze

[*] fixed xtra PE009 on UDF

[*] fixed xtra st012 on UDF

[*] fixed unparsed with backward compatibility index options

[*] INSERTED/DELETE and system procedures now not reported as missing from metabase in triggers

[*] changed order of attributes in result file for msbuild

[*] changed sort order in issue list

[*] few informational messages added

[*] in EI025 now printed procedure name

[*] added informational text for cancelling

[*] added "no error found" message after analyze

[*] added few descriptive headers for issues

Apr 19, 2014

[+] added TFS Checkin Policy

[+] added Visual Studio 2012 addin

[+] added SQLCodeGuardSettingsEditor - editor for settings files

[*] SQL Code Guard API Extended and improved

[*] added Quiet option to msbuild project

[+] added ST009 "Avoid using GOTO to improve readability"

[*] added skip-list for ST009 Avoid using GOTO to improve readability

[+] added ST010 "Use alias for all table sources"

[+] added ST011 Consider using table variable instead of temporary table + ST011AllowedTables

[+] added ST012 Consider using temporary table instead of table variable + ST012AllowedTables

[+] added PE019 "Consider using [NOT] EXISTS instead of [NOT] IN (subquery)"

[+] added EI028 "Adding NOT NULL column without default value"

[+] added EI029 Avoid using ISNUMERIC() function because it accepts int, numeric, float and money numbers

[+] added BP017 DELETE statement without WHERE clause + BP017AllowedTables

[+] added BP018 UPDATE statement without WHERE clause + BP018AllowedTables

[+] added SC001 Script should end with GO/p>

[+] added SC002 Script should end with empty line/p>

[+] added SC003 There should be no USE statement in batch

[*] added ability to append miltiple DEPxxx issues to the same statement

[*] fixed unparsed WITH XMLNAMESPACES

[*] fixed unparsed with TSEQUAL function

[*] fixed unparsed with odbc convert functions {t d ts guid}

[*] fixed unparsed with DEFAULT as default value for procedure param

[*] fixed unparsed on ALTER AUTHORIZATION

[*] fixed unparsed with CREATE FULLTEXT STOPLIST

[*] fixed unparsed CREATE PRIMARY XML INDEX

[*] fixed unparsed with DROP INDEX

[*] fixed unparsed with CREATE/ALTER EVENT SESSION

[*] fixed unparsed with SEND ON CONVERSATION

[*] fixed unparsed with select * from ::SYSTEMFUNCTION()

[*] fixed tokenization problem with <_LABEL> + fixed unparsed when label comes right after table name in select * from table1 label1:

[*] fixed issue when synonym is not resolved to database object

[*] added support for method call in case of select (blah-blah-blah as xml).nodes() or (expression).nodes()

[*] solved problem with label (FINISH:) and CLR method call(Type::Method) intersection

[*] DEP013 now prints setting on which it were catched

[*] changed the way of how settings file is determined

[*] installation changed to "for all users"

[*] upgraded to newer Ecosystem framework

[*] changed order of attributes in "copy issues" xml

[+] added few labels with instructions

[*] MI005/MI006 - case of variable name preserved

[*] fixed ST008 is not registered in scripts

[*] fixed extra MI006 on xml variables/parameters when xml variable used only with xml method

[*] fixed xtra MI003 on COLLATE

[*] fixed error with XML escaping

[*] fixed error with no-connection and dependencies

[*] fixed MSBuild fails when Outfile is empty

[*] "Version" label converted to text box to allow copy

[*] removed auto set focus on Outline window select

Feb 06, 2014

[+] SqlCodeGuard now part of Red-Gate Ecosystem

[+] added early-beta support for msbuild, please look at SampleProject.msbuild in SqlCodeGuard folder

[+] added license file

[*] fixed several CGUNP with MERGE statement

[+] added new issues MI006 "Parameter is declared but never used"

[*] minor refactoring/changes/fixes

[-] removed TBLxxx issues

[*] fixed issue when check incorrectly determines type of object being checked while running analyze from query window

Feb 25, 2013

[*] fixed incorrect line offset in error list

[*] fixed error with XML.modify and xtra MI005 error

[*] some cosmetic changes

[+] added API.GetComplexity() method

[+] added "Category" field to API.IssueInfo class

Nov 5, 2012

[+] added support for SSMS2012

Oct 8, 2012

[*] added bunch of keywords to identifier list - should minimize UNPARSED

Sep 30, 2012

[*] fixed some unparsed

[+] added "Dump dependencies"

[*] fixed error with xtra "Not found in metabase" nodes

[*] some GUI improvements

[+] added "Dump unparsed objects" context menu to issues window;

Sep 17, 2012

[*] improved performance and reduced memory usage on large amount of ssues

[*] some GUI improvements

[*] Fixed error "Class not registered" when installing under Admin account and run under regular user/install for all users

[+] added "Dump issues to file"

Sep 9, 2012

[*] "Select issues" window made resizable

[*] Fixed cutting of issues description in "Select issues" dialog

[+] Added "Dump issues summary"/"Dump issues" to Issue Window context menu

[+] Added SqlCodeGuardAPI.API.IssueList property to enumerate all defined issues

Sep 3, 2012

[+] added USE {DBNAME} and "ALTER" on view object definition

[+] added "isssue groups" to "Select issue window"

[+] added API to use in own build process/tools/so on

[+] added sample app for API usage

[*] changed default set of issues - all issues except [DEP023] Not ending Transact-SQL statements with a semicolon is deprecated

Aug 27, 2012

[+] added ability to copy issue text/message to clipboard (popup menu, ctrl+ins)

[*] added explanation for issue - BP004 "It is recommended to specify column list explicitly.Table variables are not checked"

[*] fixed - integration with localized SSMS now works

[+] added new issue- ST008 "Non-named parameter style used" for procedure call when non-named parameters used

[*] fixed GUI: selected issue line keeps selection when issue window loses focus

[*] fixed unwanted BP005 "Asterisk in select list"

select * from sys.objects
select name from CTE
select a.name
from sys.tables a cross apply (select top(1) * from sys.columns ) b
select name from (select * from sys.tables)s
[*] fixed unwanted DEP026 "Three-part and four-part column references in SELECT list are deprecated."
@backp_log_job_name sysname = ( select x.name from msdb.dbo.sysjobs_view x )
[+] added : system objects ignored
SELECT object_name(major_id)
FROM sys.extended_properties
WHERE name = 'microsoft_database_tools_support'
[*] fixed unparsed & added new issue DEP028 "This RAISERROR syntax is deprecated"
declare @msg int raiserror 50001 @msg
[*] fixed unparsed
create function TTT(@val datetime)

Aug 22, 2012

First public release